我有一个客户端和服务器应用程序,并且我观察到奇怪的行为:
客户端发送数据,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/