线程通讯、aio问题 忽然遇到一个问题,有没有在做物联网平台的朋友,就是设备与平台通过TCP保持长连接,通讯内容采用自定义协议报文。平时设备会主动往平台发送心跳包和一些日常数据,平台收到报文后同一解析。现在问题就是,当我从平台主动向设备发送请求消息,并等待消息返回,因为我TCP客户端采用的是aio接收报文并解析的,那么接收到的回复该怎么交给正在等待的线程。或者说应该怎么做,才能实现从平台发消息,然后等待设备的回复。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 回调的话,你可以参考Listener的设计模式,在发送之前add一个listener,收到数据后回调这个listner,listener可以保存一些用户敏感信息,收到的数据用客户敏感信息查找listener,或调找到的listener的接口方法就可以了 服务端建议用netty网络通信框架去实现,你只需要根据你自己定义好的数据结构写编解码器即可,发送接收数据都有接口。netty有个channel的概念,一个连接一个channel,这样面对多客户端连接时,服务器就知道是哪个客户端发的消息了,从而分别处理各自的数据。客户端连接服务端建立长连接时,客户端发一个注册/登录消息,里面包含客户端类型、ID等信息。服务端把这个连接和信息封装到一个Session里,并放进缓存里,比如ConcurrentHashMap里,有了客户ID,你想给谁发消息都可以了,客户端发来的请求或响应消息你也知道是谁发的了。这个不是一两句话就能说的清楚的,你去研究一下netty的原理就清楚了。 你都自己定义协议报文了,你加个字段描述一下不就区分了。怎么把数据回显到前台页面?不明白你都有数据了,显示到页面有什么问题。如果要实时性强点,用websocket跟页面交互数据。 那就用楼上的监听器模式了,数据处理类实现监听器接口,放到监听ArrayList里,接收到数据后就通知所有监听的类,这时你的数据就到了数据处理类里,想怎么处理就是你的事了。 LDAP认证中CN,OU,DC的含义 jquery设置select的option属性在firefox中不起作用? myeclipse 中自动完成选词问题。 struts 表单验证 出了一点问题!!!! 高手请进Spring+Hibernate+Struts+Lucene+Ajax 求救!jsp网站发布问题 hibernate和struts是什么?为什么要用它? 如何连接oracle数据库? 怎样使用indexOf的时候忽略大小写? 一个关于数组返回的问题,请赐教!!! 求助实现非同期下载 java+red5直播web项目,有无思路提供
客户端连接服务端建立长连接时,客户端发一个注册/登录消息,里面包含客户端类型、ID等信息。
服务端把这个连接和信息封装到一个Session里,并放进缓存里,比如ConcurrentHashMap里,有了客户ID,你想给谁发消息都可以了,客户端发来的请求或响应消息你也知道是谁发的了。
这个不是一两句话就能说的清楚的,你去研究一下netty的原理就清楚了。