QQ的UPD聊天原理

zhuolei123 2009-12-07 08:45:13
小弟在这里有个疑惑,2个QQ在聊天的时候,他们之间有没有分服务器和客户端

聊天信息是否是直接从一台机传送到另外一台机(我觉得应该没有经过腾讯服务器)

但是UDP通信的时候,不是也要建立服务器和客户端么

我就想知道这个服务器是建立在哪个QQ之上
...全文
514 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
mqinyang1108 2009-12-09
  • 打赏
  • 举报
回复
学习了~~~
xingda1989 2009-12-09
  • 打赏
  • 举报
回复
学习,学习
ChDw 2009-12-09
  • 打赏
  • 举报
回复
如果一台机器打开了两个QQ,你本地实际上就打开了两个端口的,分别对应一个QQ

同时网关也会有两个不同的端口映射到你内网的端口号


所以当另外一个用户给其中一个QQ发消息的时候,它只会发送到正确的端口号


服务器可以只有一个(当然QQ不可能只有一台服务器),服务器的作用只在告知另外一方用户的外网IP与端口号,同时要求另外一方进行【打洞】操作,这样才可以使得双方建立UDP直连
tjb1216 2009-12-08
  • 打赏
  • 举报
回复
好问题,看来我学的太浅了
往何 2009-12-08
  • 打赏
  • 举报
回复
学习!
zhuolei123 2009-12-08
  • 打赏
  • 举报
回复
对了,如果一台电脑上开了两个或多个QQ的话呢,是否建立了2个或多个UDP服务器
zhuolei123 2009-12-08
  • 打赏
  • 举报
回复
如果两方都会建立服务器的话,那下面这个问题怎么解决

如果电脑是通过路由器访问外网的,可以说外网IP是由路由器在管理的,我用的都是路由分下来的内网IP

如果外网的人要访问我这台电脑,那么我就必须要在路由器上指定一个内网IP,并且开一个相应的端口

才能让外网访问进来。

意思就是说,另一台机建立了UDP服务器,你要连他的外网IP和端口,那么他如果是使用路由器上网的话,他就必须在路由器中指定开发一个内网IP和相应的端口,不开的话外网是访问不到的

但是QQ貌似不需要这样做啊,它聊天也不需要去用外网映射一个内网IP,并允许开发指定端口啊
都是可以直接聊天的,就好像UDP服务器不在这两台机器之间一样。。。。咋回事呢
yifine1987 2009-12-08
  • 打赏
  • 举报
回复
用Socket就行
greenbar 2009-12-08
  • 打赏
  • 举报
回复
2个都有udp服务器把
ChDw 2009-12-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhuolei123 的回复:]
如果两方都会建立服务器的话,那下面这个问题怎么解决

如果电脑是通过路由器访问外网的,可以说外网IP是由路由器在管理的,我用的都是路由分下来的内网IP

如果外网的人要访问我这台电脑,那么我就必须要在路由器上指定一个内网IP,并且开一个相应的端口

才能让外网访问进来。

意思就是说,另一台机建立了UDP服务器,你要连他的外网IP和端口,那么他如果是使用路由器上网的话,他就必须在路由器中指定开发一个内网IP和相应的端口,不开的话外网是访问不到的

但是QQ貌似不需要这样做啊,它聊天也不需要去用外网映射一个内网IP,并允许开发指定端口啊
都是可以直接聊天的,就好像UDP服务器不在这两台机器之间一样。。。。咋回事呢
[/Quote]


你上Google 查找 UDP 穿透就行,这个是通常使用的技术。

简单点说就是
1、通过UDP也服务器通讯后,你网关默认就是作了一个外网IP和端口号 与你内网IP与端口号的映射,这个无需设置的
2、用户A先通过服务器知道用户B的外网地址与端口
3、用户A向用户B的外网地址与端口发送消息,
4、在这一次发送中,用户B的网关会拒收这条消息,因为它的映射中并没有这条规则。
5、但是用户A的网关就会增加了一条允许规则,允许接收从B发送过来的消息
6、服务器要求用户B发送一个消息到用户A的外网IP与端口号
7、用户B发送一条消息,这时用户A就可以接收到B的消息,而且网关B也增加了允许规则
8、之后,由于网关A与网关B都增加了允许规则,所以A与B都可以向对方的外网IP和端口号发送消息
it115 2009-12-07
  • 打赏
  • 举报
回复
楼上说的没错。如果纯P2P,用JXTA就可以了
wujingsonggege 2009-12-07
  • 打赏
  • 举报
回复
UDP的传输的话,它只是两台计算机的通信,如果对方不在线,信息会由服务器中转的,而你的问题实际上是两台机都是服务器也是客户端,收消息却只用一个端口,是根据数据报的内容来区分信息来自哪个好友,QQ可以说是P2P模式的,只是他需要中间服务器来管理.

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧