Вниз
Скачать: CL | DM;

ClientSocket посылает строку только со второго раза!   Найти похожие ветки 

← →
sergrrey ©   (2002-06-28 10:33) [0]

Может кто встречал?
На форме только TClientSocket, TServerSocket и TButton
procedure TForm1.Button2Click(Sender: TObject);
begin
SS1.Active := true;
CS1.Host := "localhost";
CS1.Open;
CS1.Socket.SendText("Hi");
end;
Но сервер начинает это получать только со второго раза!


← →
Digitman ©   (2002-06-28 12:25) [1]

Логика обработки события TServerSocket.OnClientRead(), реализованная тобой, некорректна или неверна в принципе.


← →
sergrrey ©   (2002-06-28 12:46) [2]

Та самая логока:

procedure TForm1.SS1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
ShowMessage(Socket.ReceiveText);
end;


← →
Digitman ©   (2002-06-28 13:46) [3]

Неверна она !
Впрочем, так же как и логика передатчика.


← →
Wizard_Ex ©   (2002-06-28 19:32) [4]

Разбей на две части
одной кнопкой открывай сокет
другой отсылай чего-нибудь

.. CS1.Open;
.. CS1.Socket.SendText("Hi");
Он еще открыться не успевает


← →
Malder ©   (2002-06-28 22:25) [5]

Верно.

1) CS1.Open;
2) CS1.Socket.SendText("Hi");

Первая комманда инициализирует подключение, но не ждет самого факта подключения, а сразу передает управление второй комманде. Но вполне естесственно, что вторая команда получает управление раньше, чем сокет успеет соединиться. Соответственно, получается попытка отослать данные ДО того, как произошло подключение. Из-за чего код и не работает.
Но также вполне очевидно, что когда ты нажмешь второй раз на кнопку, то сокеты уже соединены. Комманда CS1.Open; уже ничего не делает. А следущая за ней комманда CS1.Socket.SendText("Hi"); отсылает текст.


← →
Digitman ©   (2002-07-01 08:18) [6]

О факте реального коннекта говорит событие OnConnect()
О факте готовности передатчика после установления коннекта говорит событие OnWrite().
Отсюда и "плясать" нужно.


← →
Grrey   (2002-07-02 15:34) [7]

Спасибо, ошибку понял!



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.018 c
14-27228
vedmed
2002-08-16 10:45
2002.09.09
Что бы это значило? (var c: Char; ... c := ^A)


1-27028
VSD
2002-08-26 07:42
2002.09.09
Поиск в ListView


1-26949
Den2
2002-08-28 21:01
2002.09.09
Как заставить работать DDE в потоке (т.е. независимом процессе)


3-26859
koks
2002-08-19 12:53
2002.09.09
опять ламаю IB6...


6-27152
Alibaba
2002-07-03 12:29
2002.09.09
Обработка ошибки TClientSocket




   Наверх