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

时间:2016-10-04 19:30:33

标签: java sockets asynchronous memcached

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

如果,正如您所说,您使用TCP保证订单(在连接中)。 如果,正如您所说,服务器处理请求按照其接收的顺序并按特定顺序发送响应,响应顺序将对应请求订购。所以你按顺序分配它们。

但如果我们谈论的软件是由您(您的团队)开发的,那么您最好在客户端 - 服务器协议中包含一些请求ID ,这将有助于您分配响应请求,而不必依赖于订购。