跨越局域网通信(一)

         通过ADSL联网的两台主机怎么才能相互通信呢?
         对于一般的ADSL用户来说,通过ADSL联网都是动态IP,即它们的IP地址是不固定的。当它们联上外网,电信给它一个外网IP地址,当它断开后电信会回收此IP地址。重新联网后,电信会根据剩余的IP地址列表给出一个新的外网IP地址。
        在socket通信中,我们都是通过"IP,port"来通信的。为了获得通信主机的实时外网IP地址,我们可以采用动态域名的方式来解决。动态域名的绑定,这里就不在详述了。网上例程很多,而且这也不是本文的重点。以花生壳为例,当通信的主机装上花生壳客户端后,并通过客户端绑定好了动态域名。比如我的动态域名是cloud95.xicp.net, 这时我们通信的客户端可采用以下方式,获得通信主机IP。

 WSADATA wsaData;
 WSAStartup(0x0202, &wsaData); //初始化套接字库
 hostent* host= gethostbyname("cloud95.xicp.net");
 char* pszIP= (char*)inet_ntoa(*(struct in_addr*)(host->h_addr));

       pszIP中就是通信主机的IP地址。如果你的主机是通过路由器联上外网的,那么你还需要在路由器上设置一下端口映射。将你的本机通信端口A映射为外网端口B。socket通信时,就可以用"pszIP,B"来通信了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值