我编写了一个程序,在 Linux 中通过相同的文件描述符向同一台服务器发送 3 个请求(假设 A、B、C),然后使用 recv
等待消息(假设 A'、B'、C')返回。
服务器在 3 秒后向我发送消息后,我收到了消息,并且服务器将不按顺序将 A'、B'、C' 发送回给我。
我期望A得到A'并且B得到B',但现在A得到B',因为服务器通过相同的文件描述符发送请求。
当 A 得到 B' 时,A 是否可以继续等待,并且不通过 recv
从套接字缓冲区中删除 B'?
最佳答案
I expect A got A' and B got B', but now A got B' because server send requests through the same file descriptor.
在 TCP 中不可能,除非服务器在单独的线程中处理同一连接上的多个请求,在这种情况下,简单的答案是:不要。
关于我可以在linux中查看tcp套接字缓冲区的数据来检查数据是否是我想要的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43756840/