![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сокеты =) [D7, Win2k]
Barsky © (2006-07-18 18:14:00)Есть 2 программы : клиент и сервер.
На сервере мемо и серверсокет, на клиенте кнопка и клиентсокет.
Запускается на одной машине.
сервер:
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Add('connect');
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(Socket.ReceiveText);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ServerSocket1.Active:=true;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ServerSocket1.Active:=false;
end;
должен принять соединение, написать коннект в мемо, и написать переданный текст в то же мемо.
Клиент:
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Active:=true;
ClientSocket1.Socket.SendText('12312312312312');
ClientSocket1.Active:=false;
end;
Должен подсоедениться к серверу у передать строку.
Запускаем сервер, запускаем клиент.
Нажимаю на кнопку на клиенте, сервер пишет ТОЛЬКО коннект.
Нажимаю еще раз, в мемо появляется переданная строка.
Вопрос: Почему не передается стринга сразу при первом нажатии?
Barsky (2006-07-19 10:11:00) [1]Спасибо!
medved_68 (2006-07-18 19:09:00) [2]
> umbra
Точно
umbra (2006-07-18 18:58:00) [3]тогда получается, что после
ClientSocket1.Active:=true;
выполнение кода не блокируется и на момент отсылки текста соединение еще не установлено
medved_68 (2006-07-18 18:46:00) [4]
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> ClientSocket1.Active:=true;
> ClientSocket1.Socket.SendText('12312312312312');
> ClientSocket1.Active:=false;
Перенеси ClientSocket1.Socket.SendText('12312312312312'); в событие ClientSocket1.OnConnect.
Barsky (2006-07-18 18:34:00) [5]ctNonBlocking
umbra (2006-07-18 18:33:00) [6]а чему равен
ClientSocket1.ClientType?