社区
Java SE
帖子详情
QQ的UPD聊天原理
zhuolei123
2009-12-07 08:45:13
小弟在这里有个疑惑,2个QQ在聊天的时候,他们之间有没有分服务器和客户端
聊天信息是否是直接从一台机传送到另外一台机(我觉得应该没有经过腾讯服务器)
但是UDP通信的时候,不是也要建立服务器和客户端么
我就想知道这个服务器是建立在哪个QQ之上
...全文
514
12
打赏
收藏
QQ的UPD聊天原理
小弟在这里有个疑惑,2个QQ在聊天的时候,他们之间有没有分服务器和客户端 聊天信息是否是直接从一台机传送到另外一台机(我觉得应该没有经过腾讯服务器) 但是UDP通信的时候,不是也要建立服务器和客户端么 我就想知道这个服务器是建立在哪个QQ之上
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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模式的,只是他需要中间服务器来管理.
QQ
--基于TCP/UDP协议的通讯
原理
本文详细解析了
QQ
的登录机制及
聊天
消息传输过程,包括HTTP登录、UDP打洞技术及NAT穿越策略,揭示了如何在局域网环境下实现稳定可靠的即时通讯。
day1 –
upd
本文深入探讨了网络中进程如何通过Socket进行通信,详细介绍了TCP/IP协议族、UDP协议以及Socket的概念。Socket作为应用层与TCP/IP协议族的接口,提供了创建、绑定、监听、连接、读写和关闭等基本操作。通过TCP的三次握手建立连接和四次挥手释放连接的示例,展示了Socket在实际网络通信中的作用。同时,给出了服务器端和客户端的Socket编程实例,阐述了Socket编程的基本流程。
基于UDP协议的socket套接字编程
本文详细介绍了UDP套接字的工作
原理
,包括服务端与客户端的代码示例,探讨了UDP套接字的无粘包特性,并通过一个
QQ
聊天
应用实例展示了UDP在多客户端通信场景中的应用。
UDP套接字
本文详细介绍了UDP套接字的工作
原理
,包括服务端与客户端的实现方式,探讨了UDP协议的特点,如无连接特性、无粘包问题以及在传输小数据量时的优势。并通过一个具体的
QQ
聊天
实例,展示了如何利用UDP套接字实现多客户端与服务端的通信。
Java的网络编程之
聊天
室功能
本文介绍了一个基于Java的简单UDP
聊天
程序实现方法。通过创建发送和接收两个线程,用户可以输入文本并发送到指定IP地址的目标机器上。程序使用了DatagramSocket进行数据包的发送和接收,并确保了在MyEclipse环境下中文消息的正确显示。
Java SE
62,621
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章