c - Linux C 客户端接收 0 字节,而服务器未发送任何内容

标签 c sockets

我有一个客户端和服务器应用程序,并且我观察到奇怪的行为:

客户端发送数据,80微秒后执行recvfrom,返回0, 客户端执行recvfrom后,服务器接收数据并发送响应。这只是服务器发送的一次。

问题:这是客户端代码的问题还是代码没问题? 从 revcfrom 的手册页我可以看到,当对等方关闭连接时,recvfrom 返回 0 - 但我在服务器端没有看到任何关闭的连接 - 我做了服务器的 strace 和客户端的 strace:

客户端:

16:06:08.206571 sendto(16, "initialize\r\n", 12, MSG_NOSIGNAL, NULL, 0) = 12
16:06:08.206654 recvfrom(16, "", 256, 0, NULL, NULL) = 0

服务器端:

16:06:08.209998 recvfrom(11, "initialize\r\n", 256, 0, NULL, NULL) = 12
16:06:08.215474 sendto(11, "1\n", 2, MSG_NOSIGNAL, NULL, 0) = 2

我有点迷失问题所在......

预先感谢您的任何建议

最佳答案

无论是服务器还是客户端,recvfrom()/recv()都是一样的,所以0(关闭连接)意味着同样的事情。

关于c - Linux C 客户端接收 0 字节,而服务器未发送任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25668723/

相关文章:

linux - 使用 netcat 将 unix 套接字通过管道传输到 tcp 套接字

c - 错误 C2536 : : cannot specify explicit initializer for arrays

C 套接字不能在 Mac OS X 上运行

java - 如何在对等 2 对等设置中连接两个套接字连接

Python 如何添加网站支持我定义的协议(protocol)的打印异常

c - 环回接口(interface)是否在网卡/硬件上产生中断

C UDP组播接收包丢失

c - 提高多线程程序的速度

c - 为什么这会导致段错误?

c - 为什么下面的代码不打印整数的二进制表示形式?