c - recvfrom() 何时使用 UDP 套接字返回 0?

标签 c linux sockets

我是这样检查recvfrom()的返回值的:
while ((n = recvfrom(sockfd, buf, BUF_SIZE, 0, NULL, NULL)) > 0)
我尝试关闭发送方的套接字,但 recvfrom() 仍然阻塞。手册说 recvfrom() 在对等方执行有序关闭时返回 0。关闭 UDP 套接字没有用,对吧?
任何答案将不胜感激。谢谢。

最佳答案

recvfrom 的返回值是接收到的数据报中的用户数据量。 0 的返回值对于 UDP 是可接受的:这并不意味着对等方已关闭连接,因为写入长度为 0 的数据报是可接受的。

关于c - recvfrom() 何时使用 UDP 套接字返回 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19555952/

相关文章:

检查 C 中的 long long 溢出

c - 了解 EOF 和中断

linux - 如何在 Chef 中设置 java home

c++ - 检查 C/C++ 中的开放端口

java - 如何在网页上运行 Swing 应用程序?

C:使用对数函数安全地计算基数 (b) 的整数 (N) 的位数

c - select(2) 保证能够无阻塞地写入文件的数据量是多少

linux - ext4 卷的根目录上的 fsync 会刷新所有子卷吗?

c++ - 在多核盒子上使用忙循环应用程序

linux - 获取内核中套接字事件的通知