0

我正在尝试使用以下代码通过 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。

谢谢。

4

2 回答 2

1

我认为你的问题是 == bytesSent) < 0)条件的一部分。这不应该是类似的东西if (( bytesSent = sendto( ... )) < 0 )吗?

于 2009-11-23T21:03:40.790 回答
0

您正在检查 sendto(...) 是否等于bytesSent而不是可能bytesSent=sendto

于 2012-03-24T09:33:23.890 回答