用socket 怎么实现连接广域网中的局域网呢?(100分)

  • 主题发起人 主题发起人 zlm198325
  • 开始时间 开始时间
Z

zlm198325

Unregistered / Unconfirmed
GUEST, unregistred user!
用socket 怎么实现连接广域网中的局域网呢?
比如说: 我这里的外网IP为(221.10.44.227)我也是局域网内,然后我用我的机器做服务器,然后在广域网(比如IP为211.162.187)中的一个局域网中有一个客户端,他怎么连接到我的服务器呢? 能写上具体的程序更好,小弟先谢过了!!!急!!!
 
没有第三方服务的话,两台处在不同局网中的电脑不可能直接连通,微软的P2P技术也是在美国架设了一台服务期.
其实关键在于要建立起连接:而连接的过程是由第三方服务器负责解析双方的地址.
局域网里的机器,相当于在IPv4上在增加一个地址,直接使用TCP是无法寻址的.必须通过服务器去查找.
另转贴:
///////////////////////////////////////////////////////////////
1:两个ADSL,
2:一个ADSL,一个小区宽带(联通)
3:一个小区宽带(联通),一个广电宽带(有线电视)
你说三种环境我都没试过,我想应该可以,试试吧。我当时的环境是一台拨号上网作server S,一台接联通专线,一台接网通专线。
server S的IP可以到:
http://ip.loveroot.com/
获得。在实际的环境中Server S需要固定IP。测试就无所谓了,测试期间是固定就可以了。
测试程序你就直接用d5 的那个udp demo吧。
把NMUDP1DataReceived事件稍作修改一下,把远程端口也显示出来。
Memo1.Lines.Add(FromIP+' '+inttostr(port)+': '+TmpStr);//这句被我改过。
测试过程可以:
在server S上运行udp demo(假设server S 的固定IP是218.104.220.110(这IP不是我的,大家别攻击啊,我随便写的。),绑定端口6767)
在A、B上也运行udp demo
Client A向218.104.220.110:6767发数据
Server S 得到A的通讯IP和端口
Client B向218.104.220.110:6767发数据
Server S 得到B的通讯IP和端口
OK,这时A、B就可以用server S得到的对方的IP和端口通讯了。同时向对方发数据吧,多尝试几次。
 
还是没弄懂呀,你是说要用到P2P技术吗????那怎么实现呢?????有具体的代码吗?????谢谢啊,急!!!!!!
 
在服务器那边做端口映射最简单了
 
端口映射怎么弄呀,需要主机的IP,但是我这里没主机呀,是直接用的路由器弄的局域网,
这个怎么做端口映射呢???在线等!!
 
那你所说的外网的IP是不是路由器上WAN口的IP?
 
我是这样理解的,能不能这样,举例来说,正常情况下客户端可以Ping到你路由器的WAN口的IP:221.10.44.227,然后如果你假设需要用6767端口进行连接。则可以用IE打开路由器的设置界面,采用过滤器等设置(各种型号的路由器各有不同,但都大同小异)将路由器的WAN口的6767端口与你的机器(如:192.168.0.2)的6767端口进行绑定,这样的话一旦路由器收到6767端口的数据报就会自动转发到你机器上的6767端口,从而可以建立连接
 
建议你可以先使用Serv-U进行FTP站点的架设,然后在路由器上进行端口映射,之后测试是否能从客户端连接到此局域网的FTP站点,之后在换成你自己的通讯程序进行测试比较好
 
很简单,在路由器上做端口映射
如果是电信的adsl,你在浏览器上输http://192.168.1.1 默认用户名和密码都是Admin
进去后可以将你局域网的某一机器的指定端口,映射到公网上
两台局域网的机器都这么做,就ok了
 
哦,谢谢,我试试
 
多人接受答案了。
 
后退
顶部