黑马程序员技术交流社区

标题: 局域网聊天室的实现问题???? [打印本页]

作者: 侯慧杰    时间: 2012-7-6 20:20
标题: 局域网聊天室的实现问题????
服务器与客户端可以通信,但客户端与客户端通信的实现什么结构呢?是不是在每个客户端都要创建局域网中所有计算机的socket和thread呢??
作者: 古古头    时间: 2012-7-6 21:58
不用,客户端想跟谁聊的时候再创建套接字和线程就可以了,平时只要和服务器保持联系,然后服务器将整个房间的信息传送给你
作者: 王玲星    时间: 2012-7-7 11:45
就像打电话一样,给别人打电话,都是先打到电信的服务器,服务器再找到你要打电话的人,把你和他连接起来。
所以你跟他不是直线关系,是通过了服务器的。
作者: 戴水平    时间: 2012-7-7 12:19

客户端与客户端通信, 你把你要通讯的远程客户端的IP和端口号和信息发送给服务器,然后服务器检查一下你的远程客户端是否在线,如果在线,把信息转发给
远程客户端,如果不在线保存离线信息在服务器上,最好建立UDP连接
作者: 侯慧杰    时间: 2012-7-7 13:13
戴水平 发表于 2012-7-7 12:19
客户端与客户端通信, 你把你要通讯的远程客户端的IP和端口号和信息发送给服务器,然后服务器检查一下你的 ...

为什么要用udp啊》??udp的通信不可靠啊,亲。。。
作者: 戴水平    时间: 2012-7-7 13:18
TCp 是面向连接的非常占用服务器资源
UDP 是面向无连接的,这样可以减少对服务器的负担
作者: 侯慧杰    时间: 2012-7-7 13:23
戴水平 发表于 2012-7-7 13:18
TCp 是面向连接的非常占用服务器资源
UDP 是面向无连接的,这样可以减少对服务器的负担 ...

回答的好
作者: 侯慧杰    时间: 2012-7-7 13:25
古古头 发表于 2012-7-6 21:58
不用,客户端想跟谁聊的时候再创建套接字和线程就可以了,平时只要和服务器保持联系,然后服务器将整个房间 ...

客户端创建线程的话创建的应该是和另一个客户端的线程,服务端应该把所有客户端套接字以及地址发给我我才能与其他的客户端通信把????
作者: 古古头    时间: 2012-7-7 19:43
houhuijie135 发表于 2012-7-7 13:25
客户端创建线程的话创建的应该是和另一个客户端的线程,服务端应该把所有客户端套接字以及地址发给我我才 ...

如果是你和另一个客户端单独聊天时,这样做还行,如果是群聊呢?
群聊的时候,在通话期间,你难道要监听其它所有人,然后轮番给别人发送信息?
我觉得客户端用一个线程保持和服务器的联系,并即时更新其它客户端的资料,
如果要单独聊天,就可以直接和对方建立连接,如果要群聊,
所有在其中聊天的人全部向服务器发送和接受数据,
把服务器作为一个中转站。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2