无线承载网络和网络连接共享的流程

http://www.ybhacker.com/post-202.html


ICS有两种模式:

1. Standalone mode单机模式

应用程序无法直接通过公共ICS API或netsh命令启动或停止单机模式,开启无线承载网络通常包含有开启ICS于单机模式,用于使用dhcpv4服务器为联网设备提供私有ipv4地址。

连接设备被限制于仅仅发送和接受一个联网设备和提供无线承载网络的本地计算机之间的网络数据包。

单机模式为无线承载网络有效地提供了的私有的区域网络应用场景。

2. full mode 全模式

ICS通常采用的是全模式,应用程序可以直接通过api或者netsh命令行的方式来控制开启和关闭全模式,并且所有连接于该承载网络的设备都可以自由联网。

全模式主要用于网络共享。

全模式包含有两种网络适配器:

1. 公共接口,主要通过软AP,为其他设备提供联网功能。

2. 私有接口,DHCPv4为其他设备提供本机的局域网地址。

当公共接口无法满足联网功能,则私有借口上的DHCP服务则会为连接的设备提供本地ip地址。单机模式只在软AP启动的时候包含有私有接口,它不含有任何公共接口。

任何时候,本地计算机都只能有一个ICS的全模式实例运行。

使用ICS服务的:

1. NetSharingManager接口,该接口提供直接或间接地操作其他com组件的API

2. 调用get_EnumEveryConnection接口之前必须启动无线承载网络。

单机模式时,子网的ip范围是192.168.173.0/24

全模式时,子网的ip范围是192.168.1370/24

启动无线承载网络的逻辑:

1. 当全模式不在运行时,开启无线承载网络,则会启动单机模式

2. 当全模式正在运行时,无线承载网络接口是私有的,则该操作只会启动无线承载网络

3. 当全模式正在运行时 ,但无线承载网络并不是私有接口,则无线网络会启动,并且没有dhcpv4功能

启动或关闭ICS serveice都需要花时间,可以使用NotifyServiceStatusChange函数来确保其不在挂起状态。

无线承载网络的使用:

建议:先启动无线承载网络,再启动全模式。

当需要全模式时,如果无线承载网络已经启动并且不在全模式状态下时,应该使用WlanHostedNetworkForceStop。

IEnumNetSharingEveryConnection接口使用前必须保证无线承载网络已经开启。

无线承载网络的启动顺序:

1. 先WlanHostedNetworkInitSettings,确保无线承载网络可被配置和初始化。

2. 接着WlanHostedNetworkQueryStatusWlanHostedNetworkQueryProperty,返回无线承载网络是否有效并可用。

3. 启动ICS服务,测试其能否被用于全模式。

4. 调用WlanHostedNetworkForceStop,强制关闭承载网络

5. 调用WlanHostedNetworkStartUsing开启无线承载网络

6. 假如无线承载网络无法被启动,则返回错误。

7. 如果ICS服务已经启动,并且当前的公共或私有接口都与即将使用的新接口不同,缓存当前的公共或私有接口。

8. 使用新设置的公共和私有接口开启全模式的ICS

9. 如果刚设置的全模式的ICS无法正常启动,试着使用之前缓存的公共或私有接口来重新启动全模式的ICS,调用WlanHostedNetworkForceStop函数来强制停止无线承载网络,并返回一个错误。

10. 开启无线承载网络和全模式的ICS成功。

无线承载网络的关闭顺序:

推荐应用程序使用WlanHostedNetworkForceStop函数来关闭当前承载网络,而不是WlanHostedNetworkStopUsing

1. 先关闭全模式的ICS

2. 接着调用WlanHostedNetworkForceStop来关闭承载网络。

没有使用全模式ICS的无线承载网络的关闭你只用调用WlanHostedNetworkForceStopWlanHostedNetworkStopUsing即可。

如果使用WlanHostedNetworkStartUsing开启的无线承载网络,则相应的使用WlanHostedNetworkStopUsing关闭当前承载网络。

如果应用程序使用之前,无线承载网络已经开启,则使用WlanHostedNetworkForceStart强制开启无线承载网络,此时应用程序就获得了无线承载网络的句柄,关闭时,调用WlanHostedNetworkForceStop或者什么都不做

无线承载网络的恢复顺序:

应用程序使用无线承载网络的时候可能被其他应用程序影响,但ICS的管理程序不提供接口监听ICS的改变事件,加入其他程序使用了EnableSharing或DisableSharing来改变共享行为,消息会发送至用户界面,而不是其他应用程序。因而,当ICS无线承载网络状态改变时,应用程序必须依赖无线承载网络的通知来执行恢复操作。

应用程序使用WlanRegisterNotification来监听无线承载网络的状态,

注意, 假如之前应用程序调用WlanHostedNetworkForceStart开启的无线承载网络,则依然调用WlanHostedNetworkForceStart来重启承载网络。不然的话,使用WlanHostedNetworkStartUsing

连接设备的恢复顺序:

连接到无线承载网络的远程设备或计算机可能被某些影响ICS或无线承载网络的应用程序所影响,幸运的是,大多数设备都有断线重连功能。

连接设备断线重连的方法有:

1. 当断线时,无线设备的驱动给上层应用发送信号。

2. 无线设备周期性的检查无线承载网络的可用性。

3. 一旦无线设备的应用监测到无线承载网络,则建立连接。

4. 连接成功之后,设备用用程序相应的更新其ip相关设置。

 

百度找的好资料,备份下.....


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值