C 窗口 sendto()

标签 c sockets udp winsock sendto

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

相关文章:

c - strncmp(NULL, "foo", 0) 定义明确吗?

c++ - int64 C++ debian6

sockets - Websocket 和社交关系

http - 使用 http 1.0 或更早版本的客户端可以使用 UDP 套接字而不是 TCP 套接字吗?

C程序: segmentation fault when trying to populate dynamically created array

c - 汇编二维数组为什么地址相差相同的数字

c - 打开的子套接字如何关闭?

sockets - chrome.socket是否支持多播套接字?

php - 使用套接字php的UDP端口扫描程序

java - 一对多 TCP 通信