recvfrom() 不返回接收到的字节数
Posted
技术标签:
【中文标题】recvfrom() 不返回接收到的字节数【英文标题】:recvfrom() not returning number of bytes received 【发布时间】:2013-02-25 00:03:22 【问题描述】:这是一个关于在 c++ 中使用 recvfrom() 的非常基本的问题(希望如此)。
我正在实现一个非常基本的 UDP 函数,它发送一条消息,然后接收一条字符消息作为回报。当我调用 recvfrom() 时,我得到了相应的消息,但该函数不返回接收到的字节数(字符)。相反,它返回 0。 sn-p:
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() 不会返回接收到的字节数?
【问题讨论】:
当然,如果recvfrom
返回零,您实际上并没有收到任何东西。我非常怀疑recvfrom
是否以如此根本的方式被破坏 - 毕竟,它很可能是您的浏览器用来查看此页面的内容......
【参考方案1】:
检查 if 语句中的运算符优先级。 你想要的是
if ((nchars = recvfrom(sock, buf, LINELEN, 0, NULL, NULL)) < 0)
我猜是开心的捂脸。 :)
【讨论】:
以上是关于recvfrom() 不返回接收到的字节数的主要内容,如果未能解决你的问题,请参考以下文章
UDP和套接字,recvfrom()返回-1,资源暂时不可用