日期:2014-05-19  浏览次数:20706 次

java socket 问题。
使用mina框架开发服务端 要实现要求如下:
1.接收客户端消息,并发送返回值给客户端。
2.每分钟发送心跳信息到客户端。客户端每分钟发送心跳到服务端
3.服务端发送消息到客户端 并接收客户端返回值信息。(由服务端自主发送,而不是由客户端触发后发送)

现在的问题是,服务端发送消息后 获取客户端的返回值
mina中 服务端获取消息在服务端的 ServerHandler类里的 messageReceived方法。
如何将 发送的消息 与 返回值对应起来。 

示例
服务端   server message1  --> 客户端
        receive message1  <--
         server message2  --> 
        receive message2  <-- 

如何把     server message1和receive message1 对应起来。 它们是在2个方法里的。

(注:数据格式已确定 没有标识符对应)


------解决方案--------------------
没有标识或序列号啥的做区分是比较不合理的。

要么就通道(不同连接)区分,要么就标识区分,基本没有其它招数了。
------解决方案--------------------
服务发送的消息头要带个标示号,并在服务端记录下来

客户端接收服务的消息,将标示记录下来,准备好数据后和标示一起发送给服务器

服务器获取客户端数据首先查看数据的标示,再做其他逻辑。
------解决方案--------------------
引用:
没有标识或序列号啥的做区分是比较不合理的。

要么就通道(不同连接)区分,要么就标识区分,基本没有其它招数了。


如果你是每个客户端一个连接的话这个问题就比较容易了,通过管理这些连接的对象来区分各个客户端