Форум: "Сети";
Текущий архив: 2002.10.14;
Скачать: [xml.tar.bz2];
ВнизОтправка данных из 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 вся ветка
Форум: "Сети";
Текущий архив: 2002.10.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c