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

Вниз

Идентификация клиента в TServerSoket   Найти похожие ветки 

 
KPV-10k   (2002-04-25 21:46) [0]

Мастера, подскажите, как аутентифицировать номер клиента в TServerSoket, если подсоединено несколько клиентов, и какой-то отсоединился... Смотрел ответы ниже =>[LiNkS], но там не сказано, как это сделать, ведь одновременно может быть несколько соединений, а надо отправить сообщение только одному.


 
cyborg   (2002-04-25 21:57) [1]

Я думаю так. Можно сделать процедуру или функцию, которой передаётся Socket, и эта процедура или запоминает где нибудь этот сокет или что то делает и посылает по этому сокету то что надо.

Procedure MessageInSocket(Socket : TCustomWinSocket);
Begin
Socket.SendBuf(Data,DataSize);
End;


procedure TForm1.ServerSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
MessageInSocket(Socket);
end;

------
Жить хорошо! А хорошо жить, ещё лучше!


 
SerVS   (2002-04-26 00:59) [2]

Привязать информации к каждому сокету легко. Используй Socket.Data. Это указатель, так что можешь создать любой объект и хранить в нем всю нужную тебе инфу.
ЗЫ. Если верить доке, то тебе удалять эти обекты ну нужно, за тебя уже позаботились ;)


 
and_   (2002-04-26 14:52) [3]

При возникновении события

ClientSocket1Disconnect

в переменной Socket.Handle Содержится дескриптор отсоединившенося клиента, присвоенный ему в момент присоединения.

А отправить сообщение одному, можно, например, так


for p := 0 to ServerSocket1.Socket.ActiveConnections-1 do
if ServerSocket1.Socket.Connections[p].Handle = ClientHandle1 then
ServerSocket1.Socket.Connections[p].SendText("hello");


 
KPV-10k   (2002-04-28 09:20) [4]

Всем огромное спасибо! Теперь всё клёво работает...



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

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

Наверх





Память: 0.45 MB
Время: 0.006 c
1-23668
cher_gvf
2002-06-26 13:12
2002.07.08
Как узнать код ошибки EInOutError ?


4-23842
chernoruk
2002-05-01 08:08
2002.07.08
Почему GetHostByName( localost )=127.0.0.1 ВСЕГДА?


14-23723
Sergo
2002-06-04 16:50
2002.07.08
NeuroSolution


4-23846
Avgurin
2002-05-10 06:49
2002.07.08
Опять SysTray


14-23726
PTE
2002-06-05 19:05
2002.07.08
RXкомпонент





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