![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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;