Сокет 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').