java 异步套接字 - 哪个回复属于哪个请求?

java asynchronous sockets - which reply belongs to which request?

我在 Java 中有一个关于异步 socket-I/O 的一般性问题我找不到答案:

假设我使用 TCP 通过套接字向特定服务器异步发送 3 个请求,这意味着在发送下一个请求之前不等待请求的响应。据我所知,我可以通过使用 Java NIO 和非阻塞 SocketChannel 来做到这一点单线程。现在,假设我收到 2 个响应,并且服务器按照收到请求的顺序处理请求。有没有办法让我确定响应属于我的 3 个请求中的哪一个?毕竟,我不能保证我的请求到达服务器的顺序与我发送它们的顺序相同……对吧?是否有任何库(可能 Java.NIO 除外)可以帮助我分配对请求的响应?

期待您的回复。 很多 谢谢!

如前所述Network Socket,套接字对被描述为4元组,如果您使用的协议是TCP,那么您同时拥有请求的本地和远程ip +端口。

假设您发送了 3 个请求,您可以看到每个套接字的数据来自何处(远程 ip + 端口)。

如果,如您所说,您使用 TCP 顺序得到保证(在一个连接内)。 并且如果,如您所说,服务器处理请求的顺序是并发送响应该特定顺序,响应顺序将对应请求顺序。所以你按顺序分配它们。

但是如果我们说的软件是你(你的团队)开发的,你最好在client-server协议中包含一些request id,这会有所帮助您无需依赖顺序即可分配对请求的响应。