Вниз
Скачать: 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.013 c
4-45629
Delphi 5.01
2002-08-30 13:50
2002.10.14
Jpeg to Bmp


3-45195
bobr12
2002-09-23 10:19
2002.10.14
Взаимодействие программ запущенных на разных машинах


1-45252
tv
2002-10-04 11:06
2002.10.14
Освобождение элементов методом Free


1-45385
Антон К.
2002-09-19 20:02
2002.10.14
Маша сильно болеет туберкулезом.


1-45322
Граф
2002-10-05 06:14
2002.10.14
ищу компоненты для интрефейса в стиле ХР Боссу очень нравиться :(




   Наверх