java socket 问题。
使用mina框架开发服务端 要实现要求如下:
1.接收客户端消息,并发送返回值给客户端。
2.每分钟发送心跳信息到客户端。客户端每分钟发送心跳到服务端
3.服务端发送消息到客户端 并接收客户端返回值信息。(由服务端自主发送,而不是由客户端触发后发送)
现在的问题是,服务端发送消息后 获取客户端的返回值
mina中 服务端获取消息在服务端的 ServerHandler类里的 messageReceived方法。
如何将 发送的消息 与 返回值对应起来。
示例
服务端 server message1 --> 客户端
receive message1 <--
server message2 -->
receive message2 <--
如何把 server message1和receive message1 对应起来。 它们是在2个方法里的。
(注:数据格式已确定 没有标识符对应)
------解决方案--------------------没有标识或序列号啥的做区分是比较不合理的。
要么就通道(不同连接)区分,要么就标识区分,基本没有其它招数了。
------解决方案--------------------服务发送的消息头要带个标示号,并在服务端记录下来
客户端接收服务的消息,将标示记录下来,准备好数据后和标示一起发送给服务器
服务器获取客户端数据首先查看数据的标示,再做其他逻辑。
------解决方案--------------------
如果你是每个客户端一个连接的话这个问题就比较容易了,通过管理这些连接的对象来区分各个客户端