java网络编程中,服务端怎么监听多个客户端,并判定哪个客户端有消息发给服务端?

希望给出代码说明,谢谢... 希望给出代码说明,谢谢 展开
 我来答
无心话语wham
2011-07-04
知道答主
回答量:11
采纳率:0%
帮助的人:16.6万
展开全部

代码网上应该能搜到,不管用java还是C#,都是开一个线程侦听,有客户端连接后,就再开一个线程侦听,你想和客户端通讯或者客户端有消息发给服务器,最简单的方法是建一个数组把每次新建连接保存下来就可以了,查找比对HANDLE就行了

我是用C#做的

10636852034f
2019-06-19 · TA获得超过1179个赞
知道小有建树答主
回答量:713
采纳率:86%
帮助的人:106万
展开全部
用流的方式需要对每一个连接进行查询。如果以BufferedReader的readLine接收则是阻塞的,其它方式为非阻塞。通常网页服务器用阻塞式,这种情况下,需要为每一个连接分别生成一个监听线程。工业网络服务器用二进制非阻塞,这种情况下,可以为每一个连接分别生成监听线程,也可以使用一个后台线程进行轮询。非阻塞方式下,若无消息,则返回null(目前任何通信线路都无法发送null和长度为0的报文,所以函数返回null一定代表无消息)。阻塞方式下,若无消息,则线程等待。阻塞与非阻塞方式下的连接中断,都会抛出异常,但是机械断线则不会立即招聘异常,需要等待下一次调用write。非阻塞式read在机械断线时返回null。
用AIO方式需要先建立一个监听器。当连接建立、有消息传入时,会调用监听器中的回调函数。回调函数形参会传入一个channel。channel为阻塞通信,当对方关闭连接或发送消息失败时抛出异常,对机械断线无效。连接建立时传入channel的目的在于允许服务器首先发送信息。
用NIO方式需要建立一个socket管理线程,每当有事件触发时,可以用轮询的方式查询当前事件类型。事件有建立连接与接收到消息两种,为boolean类型。
建议使用AIO,AIO的稳定性、性能、调用方式都是最好的。唯一不足在于AIO不支持JDK1.6。
然后如果没有建立大型服务器的需求,则使用流。流的稳定性也很好,性能差一点(特别是工业通信需要轮询,导致延迟),调用方式步骤多,但是易上手,标准化程度最高。也最适合当客户端使用。
NIO是用于JDK1.6的大型服务器架构,很难得到理想的稳定性,做强制断线试验时,NIO总是能够及时死机,流通信能坚持半分钟,AIO不管怎么搞都不会死机。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c02d6baa99
2011-07-04 · TA获得超过232个赞
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:203万
展开全部
开一个线程不就好了。。。 服务器只要接受到一个SOCKET 就开一个线程阿。。参数就是这个socket。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式