【问题标题】:C windows sendto()C 窗口发送到()
【发布时间】:2010-12-19 15:28:38
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: c sockets udp winsock sendto


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我认为您的问题是条件的 == bytesSent) &lt; 0) 部分。这不应该是类似于if (( bytesSent = sendto( ... )) &lt; 0 ) 的东西吗?

      【讨论】:

      • 啊,是的,当然我不敢相信我没有看到。我为此沮丧了将近一个小时 v.v
      • 怪=、==和行太长:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-08
      • 1970-01-01
      相关资源
      最近更新 更多