Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сокеты =) [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?


Наверх

Титульная страница Поиск, карта сайта Написать письмо