程序目的:
    若干台电脑,比如A B C 三台(都有一块有线网卡和一块无线网卡), A 连接到Internet,B C 通过A 上网。利用Windows API:  ICS API。构想: A的有线网卡打开ICS,无线网卡与B C连接。伪代码:
       //遍历本地连接
        while( )
        {
          if(有线网卡)
         pNSC->EnableSharing(ICSSHARINGTYPE_PUBLIC);
        }问题:我已经成功的实现在A的有线网卡上打开ICS,理论上ICS提供 DHCP 服务和 DNS 服务但是好像这些服务并没有打开。
A B 正常连接后,用“ipconfig/all"观察B的IP,发现是169.254.*.*, 正常情况下应该是:192.168.0.*请问这是什么原因???谢谢各位!!

解决方案 »

  1.   

    在网络连接设置当中选择Wan连接,并且设置为共享网络(即启用ICS),然后目的连接选择Lan连接,此时会将Lan连接的IP改为192.168.0.1,再将该IP改为原来的IP,并且将其它机器的网关设置为该机器的IP地址,即把该机器当网关使用。如果发现有部分网页打不开,则在各机器上面都配置DNS(通常情况下DNS只要设置为网关机器即可,但是在某些时候可能会因为其它原因部分网址无法解析)。
      

  2.   

    楼上说的我明白,但是要求完全用程序实现,而不是手动设置。
    我的问题是:  我的程序中, ICS 已经启用, 但在客户机上获取IP不正确, 不知什么原因。
    有可能是 ICS 的DHCP server没有启动,但是ICS已经启动,DHCP server也应该启动才对。
      

  3.   

    我的程序是这样的:程序运行时,我首先作判断:如果本机有两块网卡(一块有线 一块无线) 并且 有线网卡能够连通Internet,我就在该网卡上启动ICS,同时无线网卡的IP设为:192.168.0.1 255.255.255.0如果不满足以上条件,无线网卡IP 和 DNS 都设为动态获取。A B 机器都运行该程序,程序发现A 满足条件,于是A的有线网卡ICS启动,同时通过运行脚本程序(有 netsh的方法)无线网卡的IP设为:192.168.0.1 255.255.255.0。
    B机器运行该程序,B没连Internet,不满足条件,于是它的无线网卡IP 和 DNS 都设为动态获取。以上程序已经完成,但测试时,B不能连接Internet, 正常情况下,B的IP应该是:192.168.0.X
    255.255.255.0 网关是:192.168.0.1 DNS:192.168.0.1,但是用"ipconfig/all"观察时,发现B的Ip:169.254.*.* 255.255.0.0 不知什么原因?
      

  4.   

    是不是B当时采用的是动态获取?而你的无线路由器,本身设置了DHCP,并且地址是169.254.*.*
      

  5.   

    忘了说一点,A B连接是计算机对计算机模式(ad hoc),并没有使用无线路由器。
      

  6.   

    那就开启DHCP服务,或者不要设置动态获取
      

  7.   

    解决了,各位如果是使用ICS API进行开发时,一定要注意,作为host的电脑要有一个公有连接,至少一个私有连接。
    比如: 有线网卡连接外网,用pNSC->EnableSharing(ICSSHARINGTYPE_PUBLIC);启动公有连接无线网卡接内网,用pNSC->EnableSharing(ICSSHARINGTYPE_PRIVATE);启动私有连接。(这一步以前没有做,所以老出现以上问题)