关闭

跨越局域网通信(一)

895人阅读 评论(0) 收藏 举报

         通过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
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:273963次
    • 积分:4421
    • 等级:
    • 排名:第7248名
    • 原创:180篇
    • 转载:0篇
    • 译文:4篇
    • 评论:31条
    最新评论