最近在学socket网络编程。但写出来的程序,都只能在局域网内使用。然后把客户端QQ发给远方好友,就是不能通信。在网上一查,原来很难啊。但一定有方法找到我所使用的具体IP。比如知道我的公共网IP和局域网IP,如何直接定位到我的电脑上?我用ipconfig找到本地连接和宽带连接的Autoconfiguration IP Address、Subnet Mask、Default Gateway,如何定位到我的电脑上,让远方的好友连接我写server端?

解决方案 »

  1.   

    这需要在路由器上设置"端口映射"功能.
    假设你的程序使用 TCP 协议,你家路由器上外网(连接 ADSL 一侧)的 IP 是 112.23.10.217,你自己的电脑是192.168.1.10,你程序服务侧 TCP 端口号是 4000,你要在路由器上把112.23.10.217:4000 映射到 192.168.1.10:4000 上.你的服务程序运行在 192.168.1.10 上,在 TCP:4000 上侦听.你朋友运行客户端,向 112.23.10.217:4000 发起连接.
    确实比较麻烦.
      

  2.   

    我的网络是网通的。这里没有漏油器,只有宽带连接的账号密码,我只是ipconfig查询到的IP地址。gethostbyname()也可以查询到这个地址。能不能在我的程序里吧这个联系起来?如何映射?有没有什么API函数之类的,我客户端设2个IP地址,端口设为4000,程序能实现定位到我的电脑么?
      

  3.   

    那么socket编程只能是局域网里才能玩?那些木马是如何实现监控的?QQ聊天,网络游戏数据,是如何直接定位我的电脑的?她们和我通信的IP是本地IP还是宽带连接IP?socket在实际工作中能做什么?糊涂了……
      

  4.   

    那么socket编程只能是局域网里才能玩?
    答:广域网也可以,只要两台机器能相互 PING 即可.那些木马是如何实现监控的?
    答:一般利用了系统的安全漏洞.细说就太多了,系统有许多漏洞,不同的漏洞有不同有"使用"方法,找本书看看吧.QQ聊天,网络游戏数据,是如何直接定位我的电脑的?
    答: 是你的电脑主动连接到服务器上的.各客户电脑通过服务器"连接"在一起的.她们和我通信的IP是本地IP还是宽带连接IP?
    答:都可以,视你的宽带连接设备而定.
       若有本地 IP,你的连接设备要有 NAT(网络地址转换) 功能.socket在实际工作中能做什么?
    答:所有与数据传输和交换的工作都可用 socket. 比如:网络游戏 网络办工等
      

  5.   

    如果2台电脑都是宽带连接,每次都自动生成IP,那么自己socket编程是没有办法连接了?算了。我还是局域网玩吧……