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

cmg*_*rba 1 c++ sockets windows 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';
Run Code Online (Sandbox Code Playgroud)

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

coo*_*451 5

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

if ((nchars = recvfrom(sock, buf, LINELEN, 0, NULL, NULL)) < 0)
Run Code Online (Sandbox Code Playgroud)

我想,快乐的脸谱.:)