Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2002.05.13;
Скачать: [xml.tar.bz2];

Вниз

Что-то странное с сокетами   Найти похожие ветки 

 
YOjick   (2002-02-28 15:50) [0]

Есть удалённый сервер ServerSocket и несколько клиентов. Для идентификации вновь присоединившегося клиента сервер посылает команду клиентам через ServerSocket1.Socket.SendText , чтобы вновь присоединившийся клиент сообщил некие данные о себе (IP, например). Работает. Но попытка послать такой-же Broadсast в обработчике дисконнекта вызывает ошибку. Проходит только отправка сообщения конкретному клиенту через ServerSocket1.Socket.Connections[i].SendText . Почему так происходит? Ведь если присоединяется новый клиент - то и без .Connections[i]. проходит!


 
Polevi   (2002-02-28 17:28) [1]

код дисконнекта приведи


 
Digitman   (2002-03-01 09:16) [2]

>>"послать такой-же Broadсast в обработчике дисконнекта вызывает ошибку"

1. Кроме как о событии дисконнекта конкретного клиента ни о каком ином "дисконнекте" не может идти и речи. А, значит, речь идет об обработке события OnClientDisconnect

Читаем хэлп и читаем :
"OnClientDisconnect ... occurs when one of the connections to a client socket is closed"

Черным по белому написано, что событие возникает уже после того, как клиент отключился, т.е. - по факту дисконнекта клиента. О какой отправке сообщения клиенту может идти речь, когда его уже не существует ?

2. Где ты вообще в описании TServerSocket выискал нечто, что позволило бы судить о реализации им встроенного broadcast-механизма ? На основании чего ты утверждаешь, что метод ServerSocket1.Socket.SendText выполняет широковещательную рассылку текста ?



 
SerVS - S   (2002-03-01 16:22) [3]

Обрабатывать дисконект ты хочешь для того что знать кто ушел? Если да, то читай дальше :)
Идея: "Нужно не ловить кто ушел, а посмотреть кто остался".
Для этого:
1. Инфу про клиента нужно хранить в ДЕЙТ. Это свойство есть у каждого потока.
2. В обработчике дисконекта пишешь нечто вроде:
ClientList.Clear;
for i := 0 to ServerSocket1.Socket.Connections do
ClientList.Add(TYourObj(ServerSocket1.Socket.Connected[i].Data).UserName);
или то что тебе нужно.



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

Форум: "Сети";
Текущий архив: 2002.05.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.004 c
4-39909
SerVS - S
2002-03-12 17:10
2002.05.13
HOOKs


1-39789
velk
2002-04-29 09:22
2002.05.13
Как работает функция Format?


1-39763
DPetrovich
2002-04-28 10:19
2002.05.13
import VCL в ActiveX


4-39893
Gayrus
2002-03-08 10:18
2002.05.13
Hook


1-39746
Zuker
2002-04-27 21:25
2002.05.13
Определитель





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский