![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Winsock: recv постоянно возвращает 65535 [D6, WinXP]
Micah'GF © (2004-05-31 10:45:00)
sSocketGlobal := Socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
sWorkSocket := connect(sSocketGlobal, AdressStruct, SizeOf(AdressStruct));
..
Result := recv(sSocketGlobal, data, 1024, 0);
почему так может быть?
Micah'GF (2004-05-31 11:55:00) [1]да, действительно возвращает 10038
а почему так может бытьconnect()же возвращает 0 и я так понимаю соединение устанавливается!?!
и еще: я устанавливаю соединение с 10.1.4.255 иsend()не работает, а если с 10.1.4.100 (свой адрес) то нормально..?! (датаграммы ловлю с помошью XSpuder)
nomshar (2004-05-31 11:27:00) [2]Пройдить в кейсе (case) по кодам ошибок. Это раз.
Ну, а главное, что ты посылаешь своему сокету? MSDN почитай. Я русским (вернее английскийм) по белому сказано, что функция recv возвращает количество байт принятой информации. Если соединение было закрыто без нарушений (по MSDN "изящно, грациозно"), то функция возвратит ноль. Иначе возвращает код ошибки. Так что проверяй WSAGetLastError.
Verg (2004-05-31 11:21:00) [3]Какой тип имеет Result?
Скорее всего recv у тебя возвращает значение SOCKET_ERROR, а если Result у тебя типа word, то ты и получишь 65535. Между прочим, recv - это функция типа integer.