java socket 一对多通信,怎么给指定的设备发送信息

空指针 发布于 2016/06/29 09:51
阅读 1K+
收藏 0
java socket 一对多通信,怎么给指定的设备发送信息?  采用多线程进行链接。
ss = new ServerSocket(port);
while (true) {
    socket = ss.accept(); 
    new ThreadedServer(socket); 
}

但是服务端要给指定IP的设备(一个或多个)发送信息,怎么实现?



加载中
1
pseudo
pseudo
服务端是被动的,只有与client建立起了连接才能发送数据
1
12叔
12叔
客户端连接 服务器后 服务器 保存这个连接  然后要发的时候选择对应的连接就行了
1
HeartArea
HeartArea

socket.getRemoteSocketAddress() 应该能够获取客户端ip,socket建立之后可以存放到全局的唯一的ConcurrentHashMap中,可以拿clinet ip作为键,这样发送的时候就可以选择。

另外推荐用nio 框架netty。

宅男小何
宅男小何
回复 @空指针 : 目前推荐的应该是netty吧
12叔
12叔
回复 @空指针 : 作者是同一个 多少 netty是后来设计的 你说哪个好
空指针
空指针
mina 框架 和 netty 哪个更优?
0
跳跃的灵活
跳跃的灵活
ClientSocket 链接一下
0
空指针
空指针

引用来自“12叔”的评论

客户端连接 服务器后 服务器 保存这个连接  然后要发的时候选择对应的连接就行了
如果直间有断开,重新连接呢 ?
12叔
12叔
重新连接跟 新的连接是一样的啊 没有连接上肯定发送不了
0
w
wahahachuang3
如果想从服务器端推送消息到客户端的话,个人觉得GoEasy推送还不错,它有Restful API 支持多语言,而且针对java他们还特别做了SDK,使用很简单方便。同时它也支持客户端推送。由于它支持websocket polling两种连接方式所以兼顾大多数主流浏览器,低版本的IE浏览器也是支持的,很适合需要快速建立实时web通信的项目。https://goeasy.io相关博客:http://www.cnblogs.com/jishaochengduo/articles/5552645.html
返回顶部
顶部