Вниз
Скачать: 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.009 c
3-26927
Ученик
2002-08-20 17:18
2002.09.09
Index out of date


14-27215
Malder
2002-08-13 18:23
2002.09.09
Печень слева или справа ?


3-26873
AM
2002-08-19 16:26
2002.09.09
Как задать автинкриментное поле в Access


14-27200
esprit_bel
2002-08-12 08:54
2002.09.09
Винт


1-27089
c0pyc@t
2002-08-28 09:36
2002.09.09
Уникальный ID




   Наверх