Вниз
Скачать: CL | DM;

Отправка данных из ServerSocket   Найти похожие ветки 

← →
BlackSun   (2002-08-12 12:57) [0]

Делаю подобие чата, и с сервера пытался сделать
serversocket1.socket.SendText("MyText");
но не получилось, тогда поискав информации нашел следующее
ServerSocket1.Socket.Connections[0].SendText("MyText");
но в моем случае это не работало, тогда я попробовал
ServerSocket1.Socket.Connections[1].SendText("MyText");
^^^
и все заработало.
Так вот как узнать, какое соединение по счету считается активным? Ведь не всегда и не везде будет 1...


← →
Digitman ©   (2002-08-12 13:20) [1]

Все соединения, зафиксированные в момент обращения к св-ву Connections[], сервером считаются логически активными.
Логически неактивных соединений, с т.з. сервера, в этом списке нет и быть не может


← →
Blacksun   (2002-08-12 16:19) [2]

Но как мне узнать, какой индекс ставить? Не перебирать же их по порядку? Когда использую Connections[0] ничего не получается, а когда Connections[1], то все работает, но это от случая к случаю...


← →
Digitman ©   (2002-08-12 16:38) [3]

А даже если бы и перебирал - каков был бы у тебя критерий выхода из цикла перебора активных соединений ?

Ты вообще кому конкретно сообщение-то шлешь ? Какому клиенту ? Как ты его вообще идентифицируешь на сервере при установлении с ним (клиентом) логического коннекта ?


← →
Ghost. ©   (2002-08-12 17:15) [4]

Ты правильно тебе говорят при подключении клиентов как нибудь идентифицируй и тогда понятно будет кому слать


← →
cyborg ©   (2002-08-12 18:03) [5]

Разошлёт всем клиентам:

For I:=MainForm.ServerSocket1.Socket.ActiveConnections-1 downto 0 do
Begin
MainForm.ServerSocket1.Socket.Connections[I].SendText("MyText");
End;


← →
Malder ©   (2002-08-12 19:12) [6]

BlackSun, ты, видимо, не понимаешь. К ServerSocket могут подключиться много клиентов. Не нужно ставить 100 сервер сокетов для 100 клиентов (тем более, ты не сможешь этого сделать). А Connections это массив, где 0 - первый подключившийся, 1 - второй и т.д.


← →
Blacksun   (2002-08-12 19:32) [7]

Я вообще не понимаю, что за клиент подключен под [0], должен быть мой, а мой получается под [1].
А клиента я никак не идентифицирую, просто у сервера открыт порт и клиент сам подключается. Поэтому я и не могу понять под каким индексом в массиве этот клиент. Может тогда подскажете, как определить?
По теории он должен быть [0], а на практике получается [1]. А все подряд перебирать не выход.


← →
Blacksun   (2002-08-12 19:41) [8]

А вот такой вопрос... почему при соединении клиента с сервером он показывает что в наличии 2 соединения, а не 1?


← →
cyborg ©   (2002-08-12 21:17) [9]

А это уже тебя нужно спросить, что ты там ещё подключаешь?
Код покажи хотябы, как ты свой сервер включаешь и как клиента к нему подключаешь?


← →
kosmach ©   (2002-08-13 07:43) [10]

Извините, если помешаю, но можно здесь же задать немного другой вопрос. Как, например, в обработчике события onServerSocketClientDisconnect определить какой именно по счету клиент сейчас отключился? Там есть параметр Socket, но у него подходящих свойств я не нашел, может нитуда смотрел, подскажите пожалуйста.
Между прочим, Blacksun , этот самый параметр Socket в событиях ServerSocket, вполне может облегчить твою жизнь.


← →
Digitman ©   (2002-08-13 08:23) [11]

>Blacksun

Факт установления коннекта с очередным клиентом фиксируется событием OnClientConnect(). Второй параметр процедуры обработки события - Socket: TCustomWinSocket - идентифицирует клиента в т.ч. как новый элемент, занесенный в список Connections[].
Отсюда и пляши.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.011 c
4-45625
s.kaster
2002-08-26 20:52
2002.10.14
Список процессов в D6


14-45544
Владик_1
2002-09-17 10:03
2002.10.14
Интернет технологии. PHP,Java,Perl? Что выбрать? С чего начать?


4-45618
arcoant
2002-08-29 15:08
2002.10.14
Как нажать кнопку в чужой программе?


1-45426
kerrik
2002-09-27 23:45
2002.10.14
Как добавить свою кнопку в заголовок окна?


1-45425
CrazyAngel
2002-10-03 13:22
2002.10.14
Недо HotKey :)




   Наверх