以下是设置:
Server Client
| |
accept connect
| |
v |
send msg1-> |
| |
v v
recv <- send
| |
v v
send msg2-> recv
| |
v v
close
这是我的问题:
1.客户端在关闭之前其实就收到了msg1,为什么会这样呢?
2.发送msg2正常返回。既然客户端收到msg1后就关闭了,为什么发送msg2成功呢?
附:我正在使用 TCP 流套接字。
The recv
函数将获取接收缓冲区中的下一个内容。对于客户端来说,如果套接字是数据报套接字,接下来是msg1。如果它是流套接字,则不会维护消息边界,因此接收可以包含来自两者的数据msg1 and msg2 if msg2已到达,并且在接收缓冲区中有空间容纳两者。
send
不等对方recv
消息,它只是将其添加到发送队列中。此时它不知道客户端是否会在读取连接之前关闭连接。如果您需要知道,您应该让客户端发送响应来确认该消息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)