![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать, от какого клиента пришли данные в TServerSocket ? (+) [D5, Win2k]
Виноградов Алексей © (2003-09-25 20:54:00)
Разъясните, пожалуйста, вот что.
У меня есть сервер на TServerSocket. NonBlocking. Ясное дело, с ним одновременно могут работать несколько клиентов. Допустим, программа такая: i-й клиент посылает серверу строчку символов, сервер отвечает ему "Hi". Так вот, у меня вопрос - как узнать, какой конкретно клиент послал строчку и кому отвечать, то есть, как узнать номер элемента в массивe CONNECTIONS (как узнать значение переменной "i"):
Сmd_Socket.Socket.connections[ i ].sendtext("Hi Have a nice day !" + #13 + #10);
Большое спасибо за помощь!
С уважением, Виноградов Алексей
Digitman (2003-09-26 08:03:00) [1]
Когда возникает событие OnClientRead(), то вторым параметром процедуры его обработки передается ссылка на объект Socket: TServerClientWinSocket. Этот объект ассоциирован именно с тем клиентом, пришедщие данные от которого возбудили в данный момент данное событие.
Достаточно запомнить ссылку на этот объект где-то вне процедуры обработки (в некой переменной SavedSocket: TCustomWinSocket), и в момент необходимости передачи данному клиенту инф-ции нужно просто вызвать метод SavedSocket.SendЧтоТо() ... и всех делов)
Tommy (2003-09-25 22:39:00) [2]
у меня в практике была такая ситуация.... поступила так... не знаю правда насколько это правильно....
каждый раз когда кто-нибудь коннектится я сопоставляю порядковый номер его коннекта его IP адресу в одном массиве и потом отискиваю его connection number по его IP...