При опредилении IP подключившегося выскакивает ошибка

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
DStorm
Сообщения: 4
Зарегистрирован: 26 май 2004, 15:23
Откуда: Уфа
Контактная информация:

26 май 2004, 16:16

Код такой
ListBox1.Items.Add(ServerSocket1.Socket.RemoteAddress);
При опредилении выскакивает ошибка, как это исправить???
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

26 май 2004, 17:41

DStorm, ты бы хоть ошибку привёл. А то как обычно - доктор, у меня ЭТО.
Даже самый дурацкий замысел можно воплотить мастерски
DStorm
Сообщения: 4
Зарегистрирован: 26 май 2004, 15:23
Откуда: Уфа
Контактная информация:

26 май 2004, 18:49

Windows socket error: Запрос на отправку или получение данных (when sending ona datagram socket using a sendto call)no adress was supplied (10057), on API 'getpeername'
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

26 май 2004, 22:43

ИМХО
ServerSocket1.Socket.Connections.RemoteAddress
Так как к серверу подключаются от (0) до (ServerSocket1.Socket.ActiveConnections) клиентов, и у каждого свой IP.
DStorm
Сообщения: 4
Зарегистрирован: 26 май 2004, 15:23
Откуда: Уфа
Контактная информация:

27 май 2004, 09:24

Я переписал код так:
ListBox1.Items.Add(ServerSocket1.Socket.Connections[ServerSocket1.Socket.ActiveConnections].RemoteAddress)
но теперь он стал выдавать следущее:
List index out of bounds (1)
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

27 май 2004, 23:16

Неправильно.
Например, ActiveConnections=1, значит в Connections есть один элемент под номером 0.
Правильно примерно так:

Код: Выделить всё

with ListBox1.Items, ServerSocket1.Socket do begin
  if ActveConnections>0 then Add(Connections[Pred(ActveConnections)].RemoteAddress);
  //Т.е. если ActveConnection-ы вообще есть, то добавляем адрес последнего Connection-а
end;
А вообще-то это надо делать на OnClientConnect, особенно, если клиентов будет много. Там один из аргументов как раз i-ый CustomWinSocket.
DStorm
Сообщения: 4
Зарегистрирован: 26 май 2004, 15:23
Откуда: Уфа
Контактная информация:

28 май 2004, 18:19

Спасибо!
Ответить