我有一个客户端和服务器应用程序,我正在观察奇怪的行为:
客户端发送数据,80微秒后执行recvfrom,返回0, 客户端执行recvfrom后,服务器接收数据并发送响应。这只是服务器发送的一次。
问题:这是客户端代码的问题还是代码没问题? 从revcfrom的手册页我可以看到,当对等关闭连接时,recvfrom返回0 - 但我没有看到服务器端的任何关闭连接 - 我做了服务器和客户端的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
我有点迷失问题所在......
提前感谢任何建议
答案 0 :(得分:0)
recvfrom()/ recv()无论是服务器还是客户端都是一样的,所以0(封闭连接)意味着同样的事情。