![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TServerSocket и несколько подключений [D7, WinXP]
Балбес © (2007-08-07 22:09:00)Жили были SocketServer и два SpcketClientа в асинхронном режиме >_<. К ServerSocket.Socket.Connections[0] и Connections[1] подключено два пользователя: первый и второй. Если отключится второй и снова подключится то все будет хорошо, первый останется в Connections[0], второй соотв-но попадет в Connections[1]. Но если отключится первый (второй перемещается в Connections[0]?) и снова подключится, то по логике второй должен быть в Connections[0] а первый (последний подключившийся) в Connections[1]. НО! Connections[0] и Connections[1] указывают оба на последнего подключившегося, т.е. на первого. Такое может быть? Проблема в сокетах или в моей голове? :)
Балбес (2007-08-08 11:34:00) [21]
> Уникальность клиента вполне обеспечивается комбинацией RemoteAddress:
> RemotePort.
Не всегда. Несколько клиентов могут быть подключены с одного IP (например, когда они из LAN с выходом в интернет) или даже с одного компьютера. Другое дело, давать ли одинаковым IP подключаться.
А дело все было в коде ^_^
Сергей М. (2007-08-08 08:57:00) [22]И вообще - идентифицировать кл.соединения по их индексу в упомянутом списке не есть разумное решение.
Уникальность клиента вполне обеспечивается комбинацией RemoteAddress:RemotePort.
Сергей М. (2007-08-08 08:14:00) [23]
> если отключится первый (второй перемещается в Connections[0]?
> ) и снова подключится, то по логике второй должен быть в
> Connections[0] а первый (последний подключившийся) в Connections[1]
Да, именно так.
> НО! Connections[0] и Connections[1] указывают оба на последнего
> подключившегося, т.е. на первого. Такое может быть?
Нет, не может.
> Проблема в сокетах или в моей голове?
Где угодно, только не в сокетах.