Форум: "Сети";
Текущий архив: 2002.09.09;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "Сети";
Текущий архив: 2002.09.09;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c