我尝试使用以下代码通过 UDP 发送,但得到了奇怪的结果。
if((sendto(newSocket, sendBuf, totalLength, 0, (SOCKADDR *)&sendAddr, sizeof(sendAddr)) == bytesSent) < 0)
{
printf("Send error! - %d\n", WSAGetLastError());
}
但是,当totalLength 变量设置为30 时,sendto 函数实际上返回2292556,难道它不应该返回至少在30 左右的值吗?我在使用 sendto 之前检查了totalLength 变量,它会很高兴地返回一个我同意的值,但随后 sendto 返回一个巨大的值。总长度永远不会大于实际缓冲区大小。
WSAGetLastError 只是返回 0。
谢谢。
最佳答案
我认为你的问题是 == bytesSent) < 0)
条件句的一部分。这不应该是类似if (( bytesSent = sendto( ... )) < 0 )
的东西吗? ?
关于C 窗口 sendto(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1785904/