Текущий архив: 2007.09.09;
Скачать: CL | DM;
Вниз
Проблема приёма пакетов через TClientSocket Найти похожие ветки
← →
sashap (2007-08-05 00:09) [0]Здравствуйте!
У меня возникла небольшая проблема с OnRead компонента TClientSocket. Мне нужно друг за другом отослать разные запросы на сервер и сохранить ответы с него. Вот отрывок кода:
procedure TForm1.csConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
a:=makenewpacket;
socket.SendText(a);
end;
procedure TForm1.csRead(Sender: TObject; Socket: TCustomWinSocket);
begin
operate(Socket.ReceiveText);
if socketcount<10 then begin
a:=makenewpacket;
socket.SendText(a);
end;
end;
Должна происходить цикличность: из csRead отправили, в csRead получили , отправили, получили и т.д. Но этого не происходит и программа прекращает работу, получив всего один ответ. Подскажите, решение, пожалуйста.
← →
patrushevd1982 © (2007-08-14 00:13) [1]procedure TForm1.csRead(Sender: TObject; Socket: TCustomWinSocket);
begin
operate(Socket.ReceiveText);
if socket.receivelength > 0 then begin
a:=makenewpacket;
socket.SendText(a);
end;
end;
← →
Slym © (2007-08-14 04:53) [2]sashap (05.08.07 0:09)
стабильной работы не добьешся: в csRead может прийти и пол команды и 2 команды (разбитие/склейка пакетов)... как будешь разбираться?
меняй концепцию
← →
Сергей М. © (2007-08-14 08:05) [3]
> sashap (05.08.07 00:09)
SendText - это функциональный метод.
← →
sashap (2007-08-16 13:24) [4]patrushevd1982, Slym, Сергей М., спасибо большое за ответы!
Я попробовал IdHTTP из Indy, оказалось то, что и нужно было.
← →
Сергей М. © (2007-08-16 13:43) [5]
> попробовал IdHTTP из Indy, оказалось то, что и нужно было
Но поскольку ты так и не разобрался в "проблеме", то когда-нибудь при возвращении по какому-либо иному поводу к использованию этого компонента ты получишь теми же граблями по тому же месту)
Страницы: 1 вся ветка
Текущий архив: 2007.09.09;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.033 c