社区
C#
帖子详情
QQ是怎么通信的?
sytu_hzj
2009-02-02 10:44:08
我们上网一般使用的内网的IP地址,没有外网固IP,而UDP通信是需要IP地址的,那么既然不知道对方的IP地址,QQ是怎么实现两个点之间的通信的呢?
新年第一帖,给个吉利的分数,哈哈
...全文
420
27
打赏
收藏
QQ是怎么通信的?
我们上网一般使用的内网的IP地址,没有外网固IP,而UDP通信是需要IP地址的,那么既然不知道对方的IP地址,QQ是怎么实现两个点之间的通信的呢? 新年第一帖,给个吉利的分数,哈哈
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
27 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
guihuan521
2009-02-03
打赏
举报
回复
这个我最熟悉啦·UDP通信需要2个条件, 对方机器的IP地址,和接受消息的端口号.
QQ 是怎么做到的呢? 其实很简单,我们下载的都是 QQ客户端, 腾讯保留着QQ服务端。并且这个服务端是24小时开启的,
那么我们好友之间是如何通信的呢?
这就要讲到QQ的通信模式了。
第一点:腾讯的QQ服务端必须开启,且服务器的IP地址是固定的,有固定的端口号接受客户端发送的消息。
第二点:客服端登录时,将自己的IP 和端口 发送给服务端,服务端记录,并将该IP和端口号发送给你所有的好友,群发消息告诉他们你已经上线。
第三点:好友间的聊天,其实这个就是点对点的了,不再通过服务器了。因为在步骤2 服务器已经将你的ip和端口发送给了你的好友,那么你的好友可以直接将消息发送到你的电脑。
第四点:如何知道好友已经离线呢?这是比较关键的,因为QQ使用的是UDP协议,UDP我们知道是不可靠连接,即只管发送消息,不管能否收到。
那么对方怎么知道你下线呢?在你下线时,会发送消息给服务器,服务器将会从上线列表里去除你的ID,并且群发消息告知你的好友。
DNN-2017
2009-02-03
打赏
举报
回复
udp跨越局域网
udp穿越nat
也就是传说中到打洞穿越:要中间服务器帮助
lanmaozi
2009-02-03
打赏
举报
回复
内网跟外网通讯有网关 陆游干涉
much0726
2009-02-02
打赏
举报
回复
记得之前有人发过类似的研究贴,什么NAT啊,UPD打洞,TCP穿透之类的.
可以参考下看看原理:
http://topic.csdn.net/u/20090108/15/7C29E14F-2B10-4878-8756-ED65BC2BB82E.html
GoldenDragon
2009-02-02
打赏
举报
回复
通信也是如此,网关有固定地址
QQ服务器只与网关联系
剩下的工作由网关完成
通过MAC地址找到请求机
完成通信
GoldenDragon
2009-02-02
打赏
举报
回复
客户端呼叫服务器,请求登陆
请求的过程中发送本机唯一标识即MAC地址给网关
由网关与外网通信,服务器返回信息通过MAC地址
再找到请求机,然后就登陆了呗
xutao888
2009-02-02
打赏
举报
回复
你登录的时候服务器已经记下了IP
浮生若梦丶
2009-02-02
打赏
举报
回复
看看
patrickpan
2009-02-02
打赏
举报
回复
UDP 打洞。
csgdseed
2009-02-02
打赏
举报
回复
外网服务器可以知道网关的动态IP再转到内网的本机IP
PowerRock
2009-02-02
打赏
举报
回复
先通过服务器互联,然后实现局域网互联。IP地址不论是在公网还是在内网都一定是有的,否则无法通信。
niitnanfeng
2009-02-02
打赏
举报
回复
顶
chengxiaorong
2009-02-02
打赏
举报
回复
学习
wuyq11
2009-02-02
打赏
举报
回复
登录QQ时,记录IP了
飞天鹰
2009-02-02
打赏
举报
回复
学习了
zhirom
2009-02-02
打赏
举报
回复
xuexi
ZhengZhiRen
2009-02-02
打赏
举报
回复
学习
csc_hanker
2009-02-02
打赏
举报
回复
[Quote=引用 5 楼 rexiechuanqi 的回复:]
客户端呼叫服务器,请求登陆
请求的过程中发送本机唯一标识即MAC地址给网关
由网关与外网通信,服务器返回信息通过MAC地址
再找到请求机,然后就登陆了呗
[/Quote]
正解!!!!
nevana
2009-02-02
打赏
举报
回复
关注
bluemynet
2009-02-02
打赏
举报
回复
学习
加载更多回复(6)
类似
QQ
的全套聊天系统[极品] 源码
【标题】:“类似
QQ
的全套聊天系统[极品] 源码”指的是一个基于.NET框架开发的、模仿
QQ
功能的完整聊天系统源代码。这个源码可能是为了教学、研究或者二次开发的目的而提供的,旨在帮助开发者理解即时通讯(IM)系统...
VC++ 仿
QQ
2011界面效果 (MFC) 源码
8. **网络
通信
**:虽然这个项目主要关注界面,但考虑到
QQ
2011是即时通讯软件,实际的实现可能还涉及到了TCP/IP
通信
,使用Winsock或其他网络库进行数据传输。 9. **多线程**:为了提高用户体验,
QQ
2011可能会使用多...
android仿
QQ
局域网聊天软件
本作品完全开源,为我的毕业设计,能支持 语音,录音,文件,文字功能。 详细介绍请看http://blog.csdn.net/cq361106306/article/details/38318663 如有不足之处请大家多多评论点播
Android基于Socket聊天最终版
在本项目中,“Android基于Socket聊天最终版”是一个实现了基于Socket
通信
的简易聊天应用,它模仿了
QQ
的一些功能。这个项目包含三个主要部分:服务器端、客户端和数据库管理。通过Socket编程,Android设备可以作为...
Android 开发即时聊天工具 YQ (更新)
"Android 开发即时聊天工具 YQ (更新)" 提示我们这是一个针对Android平台的项目,旨在模仿
QQ
的功能,提供实时的在线聊天体验。这个项目分为客户端应用(YQ)和服务器端(YQServer),下面我们将深入探讨相关知识点。...
C#
111,130
社区成员
642,542
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章