以下是设置:
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成功?
PS我正在使用TCP的流套接字.
该recv函数将获取接收缓冲区中的下一个内容.对于客户端,如果套接字是数据报套接字,那么下一步是msg1.如果它是流套接字,则不保留消息边界,因此如果msg2已到达,则recv可以包括来自msg1和msg2的数据,并且recv缓冲区中有两个空间.
send不等待recv消息的另一方,它只是将它添加到发送队列.此时不知道客户端在读取之前是否会关闭连接.如果您需要知道您应该让客户端发送响应以确认该消息.
| 归档时间: |
|
| 查看次数: |
2204 次 |
| 最近记录: |