![]() |
Модераторы: Snowy, Poseidon, MetalFan |
![]() ![]() ![]() |
|
MegaBitz |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 12.7.2009 Репутация: нет Всего: нет |
Вообщем я в Delphi новичек, и у меня возникла такая проблема, я пишу сервер с помощью компонента TServerSocket, к серверу будет подключено нескольно клиентов, как мне узнать в этой процедуре номер соеденения, от которого пришло сообщение:
Тоесть конкретный пользователь прислал мне сообщение, и программа должа только ему отправить ответ, а не все подключенным пользоваетлям. Как отправить я знаю: ServerSocket1.Socket.Connections[номер соеденения].SendText('Сообщение'), от только я не знаю как узнать номер соеденения того пользователя,который прислал мне сообщение |
|||
|
||||
Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 3 Всего: 50 |
Для этого при подключении клиента нужно обменяться какими-либо данными для идентификации клиента и сохранить их в своём приложении. -------------------- |
|||
|
||||
MegaBitz |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 12.7.2009 Репутация: нет Всего: нет |
А подругому никак?
Добавлено через 2 минуты и 55 секунд Или может есть какой нибудь другой компонент? |
|||
|
||||
Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 3 Всего: 50 |
Ну а как ты идентифицируешь клиента? Если устроит IP, с которого клиент подключается, то больше ничего не нужно. См. свойства TCustomWinSocket, по-моему, свойство RemoteHost или подобное. -------------------- |
|||
|
||||
kami |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 6 Всего: 72 |
Индекс соединения здесь не нужен. От него плясать нельзя категорически. Плясать нужно от параметра Socket:TCustomWinSocket, который есть в событии OnRead. Пример:
Так отправлять возможно, но крайне нежелательно. Поясню почему: Узнал ты индекс нужного соединения, а потом раз - и оборвалось другое соединение. Оно исключилось из Connections. Это осталось рабочим, но индексы поплыли и пытаясь отправить в соединение по узнанному ранее индексу на самом деле отправишь другому (это в случае, если не получишь ошибку List index out of bounds). Посему - если что-то и запоминать, то не id, а сам Socket. Это сообщение отредактировал(а) kami - 12.5.2010, 17:46 |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Delphi: Сети" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |