黑马程序员技术交流社区

标题: 关于网络编程端口的问题? [打印本页]

作者: 朝哥    时间: 2012-6-14 22:53
标题: 关于网络编程端口的问题?
我们发给对方信息的时候,必须知道对方的端口号。
我的QQ在给你的QQ发信息时,我怎么直到你的端口了。我查过,不同的计算机QQ的端口不一定相同。
难道QQ会先扫描计算机,查到所安装QQ的端口,然后再发信息?
谁知道这其中的原理?
作者: 郑传庆    时间: 2012-6-14 23:11
QQ登录的时候,会有个获取好友的过程,这个过程就是用户的服务器会获取好友的远程地址和TCP端口,我们聊天的时候就可以直接连接另一个客户端,实现点对点通信。{:soso_e130:}我也希望有高手能解析的更清楚。
作者: 梁清平    时间: 2012-6-14 23:45
首先,QQ是即可以使用TCP也可以使用UDP,但QQ默认是使用UDP,因为UDP消耗资源小。
实际上QQ在发送消息的时候是UDP打洞,而登陆的时候是使用用的HTTP遂道,因为登陆服务器其实就是一个HTTP服务器,只不过不是常用的那些。

了解了这些就说说QQ是如何通迅的。。
在TCP/IP协议中,唯一标识一个应用进程的是Socket,它通过网络层的IP地址和传输层的端口号来实现,对于同一个IP地址的内部网络,通过不同的端口号来标识不同的QQ进程;
当你登陆QQ服务器的时候,服务器会保留你的保留IP地址和端口号信息并在你的好友QQ进程中进行列表显示,然后两个QQ间就可以通迅了。。
不知道这样讲楼主是否有一些概念了?实际上关键是在登陆里。。服务器记录下你的QQ程序的端口号并且发送给了你的好友。。就是这样。。
作者: 李盼    时间: 2012-6-15 07:11
首先QQ程序里面肯定写好了服务器端的IP地址和端口号,你登录服务器后,服务器会记录你的IP地址和端口号。
同样你的好友登录QQ,服务器也会记录他的IP地址和端口号,当你给你的好友发消息时,是先发送到服务端,再由服务端转发给你的好友,所以你不需要事先知道你好友的IP地址和端口号!




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