Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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
8-45471
Belocarsk
2002-04-22 11:42
2002.10.14
Как читать в TMediaPlayer mp3 файл из памяти


1-45299
USTAS
2002-10-01 10:47
2002.10.14
Подсобите теорией Мастера


1-45338
michael_b
2002-10-05 19:24
2002.10.14
Как програмно отловить изменения в реестре


3-45170
De
2002-09-20 20:38
2002.10.14
Помогите чайнику!!!


1-45395
Slava_BAZ
2002-10-03 06:51
2002.10.14
Хитрый отчёт





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский