Сокет UDP: recvfrom() возвращает -1 (SOCKET_ERROR)

Я работаю над приложением сервер-клиент на основе протоколов UDP. Сервер написан на C++, а клиент - на C#.

На стороне сервера я получаю буфер с помощью recvfrom():

int bufLen = recvfrom(s, buf, 1024, NULL, (sockaddr*)&addr, &addrlen);

Странно то, что полученный buf - это именно то, что я отправил от клиента, но bufLen - это -1, то есть SOCKET_ERROR.

Я понятия не имею, в чем может быть проблема. пожалуйста помоги. Бесконечно благодарен.

1 ответ

Решение

Ваша датаграмма слишком велика или ваш буфер слишком мал.

Дейтаграмма больше, чем ваш буфер, поэтому она работает, вы получаете ошибку, возвращаемую из recvfrom, и GetLastError() возвращает 10040 ('WSAEMSGSIZE').

Другие вопросы по тегам