Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2012, 02:26   #1
Semreg
Пользователь
 
Регистрация: 28.03.2012
Сообщений: 10
Печаль IdTCPClient не могу получить пакет.

Вот кусок кода:

PHP код:
procedure TForm1.FormActivate(SenderTObject);
begin
  IdTCPClient1
.Host := '***.***.***.***';
  
IdTCPClient1.Port := *****;
  
IdTCPClient1.Connect;
end;

procedure TForm1.Button1Click(SenderTObject);
var
  
otvetSystem.Text;
  
tempString;
begin
  IdTCPClient1
.WriteFile('vopros.dat');
  
AssignFile(otvet'otvet.dat');
  
Rewrite(otvet);
    
temp := IdTCPClient1.ReadLn();
    
WriteLn(otvettemp);
    
Memo1.Lines.Add(temp);
  
CloseFile(otvet);
end
Сервер - не мой.
При нажатии на кнопку Memo1 - пустое, файл otvet.dat - пустой.
Снифер показывает, что пакет от клиента отправлен и показывает пакет, который приходит от сервера. Дельфи пакет приходящий от сервера не видит, переменная temp пустая...

В снифере видно, про приходящий пакет состоит из 78 бит...

В чем проблема? Прошу помочь советом

Последний раз редактировалось Semreg; 28.03.2012 в 02:29.
Semreg вне форума Ответить с цитированием
Старый 28.03.2012, 07:39   #2
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

ReadLn - ты понимаешь что такое LN?

и так не делается...
IdTCPClient1.Connect; и работа обычно не размазываются по нескольким кнопкам
Не стесняемся, плюсуем!

Последний раз редактировалось Slym; 28.03.2012 в 07:41.
Slym вне форума Ответить с цитированием
Старый 28.03.2012, 13:24   #3
Semreg
Пользователь
 
Регистрация: 28.03.2012
Сообщений: 10
По умолчанию

Цитата:
ReadLn - ты понимаешь что такое LN?
Ждет ответ от сервера и записывает первую линию/строку в данном случае в переменную.

Цитата:
и так не делается...
IdTCPClient1.Connect; и работа обычно не размазываются по нескольким кнопкам
У меня на форме должно быть 3-и кнопки, каждая из которых разные пакеты отправляет. Поэтому и вынес в процедуру FormActivate соединение с сервером.

Пару раз из 200 запусков непонятно каким образом у меня корректно файл otvet.dat создался.
Сравнил в HEXредакторе файл otvet.dat с ответом в снифере.
Вывод - идентичны.
Остальные 198 запусков файл otvet.dat создается 2-х байтный пустой.
Semreg вне форума Ответить с цитированием
Старый 28.03.2012, 13:33   #4
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

LN - означает читать пока не получу байты #13#10 или байт #10
если данные пришли и в них нет вышеперечисленного то программа будет ждать следующий пакет
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 28.03.2012, 14:36   #5
Semreg
Пользователь
 
Регистрация: 28.03.2012
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Slym Посмотреть сообщение
LN - означает читать пока не получу байты #13#10 или байт #10
если данные пришли и в них нет вышеперечисленного то программа будет ждать следующий пакет
Научи, как поправить, чтоб работало

Прилепил скрин снифера.
Вверху красным - мой отправленный пакет.
Синий ответ всегда почти одинаковый. Различия в несколько байт.
Изображения
Тип файла: jpg skrin2.jpg (85.5 Кб, 64 просмотров)
Semreg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу получить ID Авторитет JavaScript, Ajax 1 17.03.2012 12:08
Не могу получить значение от функции Sauber Общие вопросы C/C++ 1 16.11.2011 02:33
не могу получить найменьшую сумму... Ykanakataka Паскаль, Turbo Pascal, PascalABC.NET 2 27.08.2011 16:59
Не могу отправить пакет? VintProg Работа с сетью в Delphi 3 01.12.2010 07:35
Зарплату не могу получить Urpey Свободное общение 12 26.06.2010 15:30