| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > Помощь в TServerSocket |
| Автор: MegaBitz 12.5.2010, 13:15 | ||
Вообщем я в Delphi новичек, и у меня возникла такая проблема, я пишу сервер с помощью компонента TServerSocket, к серверу будет подключено нескольно клиентов, как мне узнать в этой процедуре номер соеденения, от которого пришло сообщение:
Тоесть конкретный пользователь прислал мне сообщение, и программа должа только ему отправить ответ, а не все подключенным пользоваетлям. Как отправить я знаю: ServerSocket1.Socket.Connections[номер соеденения].SendText('Сообщение'), от только я не знаю как узнать номер соеденения того пользователя,который прислал мне сообщение |
| Автор: MegaBitz 12.5.2010, 17:07 |
| А подругому никак? Добавлено через 2 минуты и 55 секунд Или может есть какой нибудь другой компонент? |
| Автор: Демо 12.5.2010, 17:12 |
Ну а как ты идентифицируешь клиента? Если устроит IP, с которого клиент подключается, то больше ничего не нужно. См. свойства TCustomWinSocket, по-моему, свойство RemoteHost или подобное. |
| Автор: kami 12.5.2010, 17:45 | ||||||
Индекс соединения здесь не нужен. От него плясать нельзя категорически. Плясать нужно от параметра Socket:TCustomWinSocket, который есть в событии OnRead. Пример:
Так отправлять возможно, но крайне нежелательно. Поясню почему: Узнал ты индекс нужного соединения, а потом раз - и оборвалось другое соединение. Оно исключилось из Connections. Это осталось рабочим, но индексы поплыли и пытаясь отправить в соединение по узнанному ранее индексу на самом деле отправишь другому (это в случае, если не получишь ошибку List index out of bounds). Посему - если что-то и запоминать, то не id, а сам Socket. |