不在同一局域网内的两台机器如何传输数据??(50分)

  • 主题发起人 主题发起人 风之彼端
  • 开始时间 开始时间

风之彼端

Unregistered / Unconfirmed
GUEST, unregistred user!
一台机器(机器A)有固定ip:61.156.33.1
另一台机器(机器B)与其他机器共享61.156.33.19,在局域网中的ip为10.1.24.188。
两台机器如果通过socket传输数据,机器B传给机器A只需要在clientsocket.address填上
61.156.33.1,但是机器A如何传输数据给机器B?
 
A不能主动连接到B,除非61.156.33.19这台服务器特别设置了端口的设置,设置某个端口就连到哪里(没做过,但知道可以)
或者B主动连接到A,A不要断开连接,保持此socket连接,A要发给B就用此socket
 
关注!!!
十分关注!
就好比一些网络游戏怎么实现数据的传递,比如,我们学校的电脑通过教科网连接INTERNET,
所有电脑对外显示的IP是61开头的同一个IP,而每台电脑自己又有10开头的IP,电脑怎么知道要把数据传给哪一
台电脑呢?
 
如果需要出局网关,通过配置硬件(如路由器)可以实现。
也有支持网关设定的SOCKET(Delphi6中的SOKCET控件)可以使用。
如果Client能找到Server,就不必担心Server的数据发送不到Client。
 
我和一些朋友搞过一段时间的网络线路规划
起初的时候,我们只有通过代理服务器,才能上QQ,后来,不通过代理服务器了
改为防火墙自动路由,这样就什么都可以了
而且通过p2p(点对点)软件传输文件,我问了,另一端的和我都在不同的局域网
之中,都处在防火墙之后,而我们可以互相传送文件,通过workslink(www.workslink.com)
试验过
但是,具体的实现有没有什么要求,比方说,是不是仅仅需要开一个固定的端口就可以了?
还是要映射到一个internet服务器(例如防火墙)上的端口?
qq是怎么弄的,workslink又是怎么弄的,我想既然是点对点一定不会再通过服务器了,
等等等等....
 
我想,qq是这样的:
如果你处在一个局域网当中,你对外的端口是映射到服务器的一个端口,
当有人向服务器的这个端口传输数据的时候,服务器自动将这些数据传给你,
在你登陆qq的时候,将你的服务器的ip,和你映射到服务器的端口记入数据库。
然后,当别人想要跟你传输数据的时候,直接从服务器获得你的'ip',和你映射到
这个ip上的端口。
所以,你跟别的局域网传输数据,只是传到了他所在的服务器,由服务器中转。
而且,一定要有服务器端软件,你登陆的时候,把你的ip存在服务器的数据库当中。
以便别人访问!
 
共享同一个IP,能吗? 没试过,如果两台机器同时发送HTTP请求时会发生什么情况?

关注
 
很简单呀,你的21端口映射在服务器的一个没有使用的端口号上,然后帮你转发出去
一旦你的http返回消息,服务器的那个端口收到消息之后,就自动将消息转到你的
21端口。
win98se 的internet 共享以及sygate都是这个原理。
 
多人接受答案了。
 
后退
顶部