Linux C客户端接收0字节而服务器没有发送任何内容

时间:2014-09-04 14:56:58

标签: c sockets

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

客户端发送数据,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

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

提前感谢任何建议

1 个答案:

答案 0 :(得分:0)

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