Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.14;
Скачать: 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 вся ветка

Текущий архив: 2002.10.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
1-45428
AlexeyMir
2002-10-03 13:29
2002.10.14
MDI - Child


1-45316
Марина
2002-10-04 14:25
2002.10.14
Подключение с помощью ODBC (Excel)


3-45185
VictorT
2002-09-20 18:41
2002.10.14
многопользовательская база в MySql


4-45620
Endre
2002-08-29 15:40
2002.10.14
EasyTransparent98


3-45234
Шурик Ш
2002-09-24 11:23
2002.10.14
Редактирование DBGrid