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

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

CllientSoket и ServerSoket [D7, WinXP]


Кабан555 ©   (2005-09-18 22:30:00) 

У меня проблема с компонентами CllientSoket и ServerSoket
В клиентской части по событию нажатия кнопки пишу следующее
 
ClientSocket1.Active:=true;
ClientSocket1.Socket.SendText(Edit2.Text);
ClientSocket1.Active:=false;

из кода видно что на серверную часть посылаеться текст из компонента Edit2
В серверной части в компоненте ServerSoket в событии onClientRead пишу следующее

Socket.active:=true;
s:=Socket.ReceiveText;
Socket.active:=false;
Label1.Caption:=s;

как видно сообщение должно отображаться в компоненте label1
но почему то отображаеться только каждое второе сообщение.
Может я что то не так далаю ?


antoxa2005   (2005-09-19 04:21:00) [1]

"после ответа сервера клиенту"


antoxa2005   (2005-09-19 04:20:00) [2]

Попробуй не

ClientSocket1.Active:=true;
ClientSocket1.Socket.SendText(Edit2.Text);
ClientSocket1.Active:=false;

а ClientSocket1.Active:=false; после ответа клиента серверу, что он получил сообщение.


kami   (2005-09-18 23:42:00) [3]

Не факт, что клиентский сокет сразу после начала подключения (Active:=True) установит соединение, чтобы можно было посылать информацию.
Из постановки вопроса не видно, что после приема информации нужно разрывать соединение, поэтому :
Socket.active:=true; ? Само собой, что сокет активен, иначе OnRead и не вызвалось бы.
Socket.active:=false; ? Разрыв соединения - это специально, или нет ?

Как я понимаю, это тестовая программка. Разнеси действия :
Поставь серверу Active:=True - в design-time;
ClientSocket.Active:=True- на одну кнопку (+ на ClientSocket.OnConnect - визуальное или звуковое оповещение что соединение прошло успешно)
Отправка текста серверу (и только она) - на вторую кнопку.

И в OnClientRead на ServerSocket пиши только
s:=Socket.ReceiveText;
Label1.Caption:=s;


Наверх

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