外网机器如何与局域网内机器通信????????急!!!!在线等待!!!!

liangyiqing 2003-08-21 08:49:05
如果我知道局域网内某台机器(假设为A)的IP和它监听的端口,也知道此局域网与因特网联接所用服务器(假设为M)的IP,请问,因特网上一台机器(假设为B)如何与A通信?
换句话说,qq的通信原理是什么?
...全文
37 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Satanbf 2003-12-18
  • 打赏
  • 举报
回复
内网机器主动连接,产生通路,外网机器可以根据这条通路和内网机器通信,但必须是UDP的!
test7979 2003-08-21
  • 打赏
  • 举报
回复
好象可以使用HttpTunnel的技术,

大致意思是这样的,不知道对不对,

记符号 S(局域网外服务器) M(局域网对外服务器) C(局域网内部机器)

普通情况下
C 向 M 发送 请求 S 的数据(网页内容)(假设通过端口 80)
M 发送请求 S 的数据,S 把数据发给M,
M 发送数据给 C
由于这条连接是一直可用的,假设我们要使用QQ

所以可以在 S 上启动一个Http服务,

这个服务把请求的数据转发到 S 上的QQ请求

当收到QQ请求后,把得到的数据进行封装,做成Http服务的数据

然后发送给请求方

下面我们可以看这种情况下的数据传输

C 向 M 发送请求 S 的数据(Http)
M 向 S 请求一个 Http 的数据
S 上的 HTTP 服务 收到请求后知道这是一个 关于 QQ 的请求
S HTTP 服务向 S 上的 QQ 服务发送一个请求
后面的过程上面已经说了 :)
C 收到 M 传来的 Http 数据时,把QQ的数据分解出来

大致就是这样的

从上面的过程可以看出,你需要自己写一个 Http Server, 和Http Client

不过这个东西已经有现成的了,请 Google Httptunnel :D
alinnb 2003-08-21
  • 打赏
  • 举报
回复
但是qq使用的应该是UDP吧
yyszh 2003-08-21
  • 打赏
  • 举报
回复
TCP--连接的协议,连接的协议就意味着你不发出断开指令就一直连接。无须你去保持,IP层会替你保持。
liangyiqing 2003-08-21
  • 打赏
  • 举报
回复
对,外部机器直接主动联接,肯定不行!
在局域网内上qq之后,qq主动和qq服务器建立联接,服务器就可以qq通信了。
可是,问题在于,这条通路为什么能保留那么久,直到下线为止?而且,这条通路在qq上线期间一直都没有变,一直都是那条通路,想问的是,这条通路应该如何保持?
hero3_cc 2003-08-21
  • 打赏
  • 举报
回复
gz
ChDw 2003-08-21
  • 打赏
  • 举报
回复
QQ默认是使用UDP协议的,这个我也一直没有完全搞明白。

但是如果是一些如FTP之类的TCP协议,那么其实是局域网内的机器主动连接外部机器,这个时候只要外部机器只要用这个Socket就能发送数据会内部机器,因为网关已经帮你们之间建立
联系了。

但是外部机器直接想主动连接内部机器是不行的,否则怎么叫做内部呢?
liangyiqing 2003-08-21
  • 打赏
  • 举报
回复
可是如果在局域网内用qq,qq登陆之后,不是就和qq服务器一直保持连接吗?此时,当qq服务器给qq发消息时,不就相当于外网与局域网通信吗?那这是怎么通信的呢?
yayv 2003-08-21
  • 打赏
  • 举报
回复
由外网向内网主动连接是连不通的。你必须使用外网机器做服务器。QQ使用的UDP协议,现在也有TCP协议,他的服务器在公网上。
yyszh 2003-08-21
  • 打赏
  • 举报
回复
QQ和服务器连接使用的应该是TCP吧。

62,614

社区成员

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

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