java多人聊天室问题
答案:4 悬赏:50 手机版
解决时间 2021-01-28 01:19
- 提问者网友:战皆罪
- 2021-01-27 15:05
服务器端每次有用户连接时就产生一个线程处理 当此用户向服务器端发送消息时 如何让其他在线用户收到此用户的消息?
最佳答案
- 五星知识达人网友:零点过十分
- 2021-01-27 15:17
用一个ArrayList把链接的用户对象放进去
然后只要别的人发信息回来
就遍历这个ArrayList把信息发给其别的对象
然后只要别的人发信息回来
就遍历这个ArrayList把信息发给其别的对象
全部回答
- 1楼网友:由着我着迷
- 2021-01-27 18:07
ajax推模式
- 2楼网友:三千妖杀
- 2021-01-27 17:10
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,将信息在页面中显示出来 至于传送文件,可以考虑使用服务器中转的方式进行,不过这个方法不是很好,建议另外查询一些资料
- 3楼网友:愁杀梦里人
- 2021-01-27 16:38
S还是C/!
这个要说清楚!这也做是方便以后做私聊的时候的查询;S的!
下面我就第二种情况说一下,可以实现:
讲用户信息放在一个map里面你想写成B/
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯