这是关于在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()都不会返回收到的字节数?
答案 0 :(得分:5)
检查if语句中的运算符优先级。 你想要的是
if ((nchars = recvfrom(sock, buf, LINELEN, 0, NULL, NULL)) < 0)
我觉得快乐的脸书。 :)