Код такой
ListBox1.Items.Add(ServerSocket1.Socket.RemoteAddress);
При опредилении выскакивает ошибка, как это исправить???
При опредилении IP подключившегося выскакивает ошибка
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
DStorm, ты бы хоть ошибку привёл. А то как обычно - доктор, у меня ЭТО.
Даже самый дурацкий замысел можно воплотить мастерски
Windows socket error: Запрос на отправку или получение данных (when sending ona datagram socket using a sendto call)no adress was supplied (10057), on API 'getpeername'
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
ИМХО
ServerSocket1.Socket.Connections.RemoteAddress
Так как к серверу подключаются от (0) до (ServerSocket1.Socket.ActiveConnections) клиентов, и у каждого свой IP.
ServerSocket1.Socket.Connections.RemoteAddress
Так как к серверу подключаются от (0) до (ServerSocket1.Socket.ActiveConnections) клиентов, и у каждого свой IP.
Я переписал код так:
ListBox1.Items.Add(ServerSocket1.Socket.Connections[ServerSocket1.Socket.ActiveConnections].RemoteAddress)
но теперь он стал выдавать следущее:
List index out of bounds (1)
ListBox1.Items.Add(ServerSocket1.Socket.Connections[ServerSocket1.Socket.ActiveConnections].RemoteAddress)
но теперь он стал выдавать следущее:
List index out of bounds (1)
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Неправильно.
Например, ActiveConnections=1, значит в Connections есть один элемент под номером 0.
Правильно примерно так:
А вообще-то это надо делать на OnClientConnect, особенно, если клиентов будет много. Там один из аргументов как раз i-ый CustomWinSocket.
Например, ActiveConnections=1, значит в Connections есть один элемент под номером 0.
Правильно примерно так:
Код: Выделить всё
with ListBox1.Items, ServerSocket1.Socket do begin
if ActveConnections>0 then Add(Connections[Pred(ActveConnections)].RemoteAddress);
//Т.е. если ActveConnection-ы вообще есть, то добавляем адрес последнего Connection-а
end;
Спасибо!