永发信息网

java多人聊天室问题

答案:4  悬赏:50  手机版
解决时间 2021-01-28 01:19
服务器端每次有用户连接时就产生一个线程处理 当此用户向服务器端发送消息时 如何让其他在线用户收到此用户的消息?
最佳答案
用一个ArrayList把链接的用户对象放进去

然后只要别的人发信息回来

就遍历这个ArrayList把信息发给其别的对象
全部回答
ajax推模式
1.c/s中一般采用socket+多线程+io+swing或applet技术,思路是这样的:
在服务器端建立一个连接端口,专门用来让客户端连接服务端的,并且不断监听连接请求,当有用户连接时,为登录的用户开启一个端口,并且将这个端口放在一个全局的list中,还需要给这个用户分配一个线程,用来不断监听list中的端口是否有新的连接请求,有的话,则为全部或者指定的端口发送信息(使用io流)。
而在客户端中在连接上服务端后,同时开启一个线程,不断的监听服务端是否有信息发送过来。在客户端发送信息的时候,则连接通过socket向服务器端发送信息。
至于图片或者文件,则是类似的原理,不再多讲.
2.b/s中一般采用servlet+ajax+js.在用户登录的时候记录下他的session或者用户信息存放在全局map中,以用户名或session为key,消息内容list为value。当用户发送信息并提交的时候,后台收到信息,并根用户对象,然后据发送的对象不同(群聊或私聊),从map中遍历出指定的聊天,存放消息内容的list中加入所发送的消息。
而客户在聊天页面中,需要通过ajax不断的去调用访问后台,去查看是否有新的消息,有则通过js,将信息在页面中显示出来
至于传送文件,可以考虑使用服务器中转的方式进行,不过这个方法不是很好,建议另外查询一些资料
S还是C/! 这个要说清楚!这也做是方便以后做私聊的时候的查询;S的! 下面我就第二种情况说一下,可以实现: 讲用户信息放在一个map里面你想写成B/
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
中华女子学院山东分院的录取分数线是多少?
单反相机7d拍照的时候为什么液晶屏不会亮,本
请问柳州五菱新事业发展有限责任公司和柳州五
新凤霞(1927-)的意思是什么啊?知道的请说下
大众朗逸汽车的码表上有黄灯亮是怎么回
送人镁晶体有什么寓意
一个女生独居应注意哪些
(﹣2a²)³×(x²+x²y²
破解网吧管理员密码
王菲春节晚会唱的歌叫什么名字?
为什么有手厥阴经,没有手厥阳经?
蔟蔟的意思是什么啊?知道的请说下!
19世纪四五十年代林则徐、魏源等人提倡的新思
iPhone开机后能收到关机时别人发来的短信吗
张显宗死了最后岳绮罗有没有伤心
推荐资讯
女的也会有梦遗吗?
浮没的意思是什么啊?知道的请说下!
北京哪有卖日本NTCutter 替刃BD-100刻刀片,
(1)香雾云鬟湿,。 (杜甫《月夜》) (2
我是上海市艺术类(美术)考生,工技大的专业
网上能买烟吗?
刘小乔的奶子是什么罩杯?
承德市公安局张瑞林您好,我是平泉一个普通农
传奇世界中穿齐圣魔装备一套有什么隐藏属性?
怎样才能快速背单词
【家用led灯多少瓦】家庭照明用led节能灯多少
呃喔的意思是什么啊?知道的请说下!
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?