1

这是一个非常基本的问题(希望如此),关于在 windows、c++ 中使用 recvfrom() 。

我正在实现一个非常基本的 UDP 函数,它发送一条消息,然后接收一条字符消息作为回报。当我调用 recvfrom() 时,我得到了相应的消息,但该函数不返回接收到的字节数(字符)。相反,它返回 0。片段:

sendto(sock, "10000;1;Chris\0", 14, 0, 
   (struct sockaddr FAR *) &sin, sizeof(sin));

if(nchars = recvfrom(sock, buf, LINELEN, 0, NULL, NULL) < 0)
    errexit("recvfrom failed: error %d\n", GetLastError());
buf[nchars] = '\0';

我的返回消息需要附加一个空字符,但 nchars 一直返回为 0,这使得这很困难。任何想法为什么 recvfrom() 不会返回接收到的字节数?

4

1 回答 1

6

检查 if 语句中的运算符优先级。你想要的是

if ((nchars = recvfrom(sock, buf, LINELEN, 0, NULL, NULL)) < 0)

开心的捂脸,我猜。:)

于 2013-02-25T00:12:48.227 回答