recvfrom()不返回接收的字节数

时间:2013-02-25 00:03:22

标签: c++ windows sockets udp

这是关于在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()都不会返回收到的字节数?

1 个答案:

答案 0 :(得分:5)

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

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

我觉得快乐的脸书。 :)