java TCP做聊天程序是应该一个聊天窗口一个线程还是一个Socket一个线程

若代码中S用static修饰,开启两个客户端程序static会互相影响?附代码http://pan.baidu.com/s/1mikySkg... 若代码中S用static修饰,开启两个客户端程序static会互相影响?
附代码
http://pan.baidu.com/s/1mikySkg
展开
 我来答
空空如也戈
2016-10-09 · 超过10用户采纳过TA的回答
知道答主
回答量:26
采纳率:0%
帮助的人:16.3万
展开全部
socket通讯是阻塞的,一个聊天就有一个socket,需要一直在哪里阻塞读取数据,所以就一个socket就要用一个线程了。如果用nio的话,通讯是非阻塞的,就不用一个聊天一个线程了。如果聊天人数大的话,建议用nio。现在netty框架就非常不错。
zhang747572367
2016-07-05 · TA获得超过162个赞
知道小有建树答主
回答量:350
采纳率:75%
帮助的人:110万
展开全部
java提供了两种IO方式,一种是基于阻塞式的(BIO),一种是基于非阻塞式的(NIO),基于阻塞式的socket会一直阻塞在等待客户端的链接上,如果客户端有链接过来则分配一个线程去处理,然后又继续阻塞;如果是基于NIO的socket,会用到缓冲技术,socket将会被放到通道上,即使客户端没有链接过来,也不会一直的去阻塞,会一直的去轮询,直到通道可以进行读写为止,所以可以做到一条线程去处理多个链接。。。如果是用BIO的方式就是一个scoket一条线程,如果是NIO的话就不用考虑。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f5322ce
2016-10-27 · TA获得超过101个赞
知道小有建树答主
回答量:83
采纳率:50%
帮助的人:31.6万
展开全部
你是用swing来做的么?
应该是这么说,一个socket一个线程。
服务器开启中。。。
客户端1启动的时候,创建socket客户端,发起请求,并且显示窗口。
你可以在服务端用线程池管理socket数量。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
playboy5210
2016-08-08 · TA获得超过618个赞
知道小有建树答主
回答量:265
采纳率:100%
帮助的人:154万
展开全部
其实无论怎么做都是可以的,只是那种更加优化.
通常的做法一个socket一个线程就可以了.根据命令请求解析内容.把不同内容放到不同的聊天窗口中.
另外如果只是聊天的话,建议用udp比较好.可以采用udp协议+应答机制.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rappant
2016-09-02
知道答主
回答量:17
采纳率:0%
帮助的人:9.1万
展开全部
理论上是一个用户一个socket,而不是窗口。
1、必须采用短连接;
2、采用TCP做聊天窗口不合理,建议UDP;
3、设置服务端的会话超时,以便于缓解会话连接数增加的压力;
4、线程的增加按业务需求而定,不是必须使用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(11)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式