qq的消息如何能从我们外部网址找到内部(192。168。10。131)网址,然后发给我???(100分)

  • 主题发起人 主题发起人 gyp3085
  • 开始时间 开始时间
G

gyp3085

Unregistered / Unconfirmed
GUEST, unregistred user!
我们机器在外面的ip地址是218。10。122。137
内部就是192.168.10.*了,
那么,如果你用qq给我发消息,qq是如何通过218.10.122.137找到我的
192。168。10。105的呢?程序如何实现?
(我们使用代理上网)


 
QQ对同一个地址使用不同端口区分不同的SocketId,即当它检测到该地址已经使用,那么将使用
一个新的端口,而不是使用默认的端口,这样局域网的网关根据不同的端口将信息转发到不同
的内部IP。
 
但现在局域网内只有我一个人登陆了服务器,在服务器上我定义的信息格式如下:
用户名 ip地址
因为就我一个人登陆了服务器,所以内容是:
王明 218.10.122.137
我登陆时使用的udp端口是8666,因为就我一个人,不会有端口重复问题,应该能找到我的,但实际上找不到我。
如果两个人登陆服务器,找不到是正常的,我一个人怎么也找不到?
 
这个问题,在本网站已经有很多人问过了,不过都没有明确的解答,希望大家都来关注,
解决这个问题。
 
我感觉不是qq的功能,应该是操作系统在起作用吧
 
你不是通过代理出去的吗? 你发出去的消息实际上发给了你的代理服务器,qq发回的
消息也给了代理服务器,当然,发送的消息数据包里面包含有你的信息,代理服务器
通过数据包里面的信息知道是给你的消息而不是给我的。

至于数据包里面怎样加入让代理服务器识别的消息,请查阅代理协议,比如SOCKS4/5
 
问题是这样的:
我做了一个程序,它实现整个的qq功能。
分为客户端和服务器端。
假设服务器地址是202。4。45。4(公网ip),我们路由ip是218。10。132。122,
内部ip是192。168。10。*

当我登陆服务器,我把我自己的ip告诉服务器上所有在线的人,这时服务器得到的
ip应该是我们的外部ip:218。10。132。122,然后服务器发给我一个确认信息,
它应该把信息发到218.10.132.122中,但我一定收不到,因为我的ip是192。168。10。105。
我想知道的是,通过什么方法可以让我收到消息。当然是要用编程来实现。
 
又是这种问题。

如果客户端在局域网内,外部不能主动连接客户端发送消息,必须客户端主动连接外面
的机器。如果客户端和服务器保持持续的连接,那么有可能通过代理服务器,外面能够
主动发消息进来。
 
外面的发的信息内部根本就收不到,如果解释的很清楚的话,
同一种问题会问这么多次吗?
如果你真会,就说具体点。
 
我说的已经很具体了,是你理解能力差还是装傻?

必须由内部主动向外连接,并建立持续的TCP连接,然后可以通过SOCKS协议互相发送消息,
当然前提是你的代理服务器提供SOCKS.
 
这个请qq开发人员解答
 
这个问题是windows解决的,因为操作系统可以实现连接共享,具体内部如何实现可以研究
 
我完全同意“一个过客”的说法!
 
to 一个过客:我觉得你说的有些问题,如你所说,每一个用户都需要和服务器保持持续的联接
的话,服务器必然不堪重负。
“必须由内部主动向外连接”这是对的,局域网内的QQ登录时由代理服务器映射一个端口给
这个IP,QQ服务器得到的是你的代理服务器的IP和映射的端口号,然后它将这个IP和端口号
发送给其它已经登录的用户,以后各用户之间的通讯是通过这个IP和端口号来进行,至于由
代理服务器到内部IP的映射是由代理服务器来完成的,不关QQ的事。
 
关注一下
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部