最近想用C++做一个自动开启wifi共享的软件。这就需要使用程序来操作承载网络了/虚拟网卡。当然,可以在程序中调用 netsh wlan set hostednetwork .......之类的东西,不过个人感觉这样做局限性很大,而且效率不高(明明可以用API实现的,非要用命令创建一个进程来解析这串命令去实现)。因此,本人写了一份使用C++来操作承载网络/虚拟网卡的代码。这些代码不需要“以管理员身份运行”。本人编程经验有限,不足之处还烦请大家多多指教!!^ ^
另外,要想自动开启wifi热点,还需要用C++设置相应网卡的网络连接共享。具体可以看一下我在csdn上的另一篇文章:
利用这些代码,本人写了一个完整的wifi共享工具,
先用netsh命令设置承载网络参数:
再用测试程序修改配置并且启用承载网络,10s之后关闭承载网络:
使用方法:
_HostedNetworkInfo 结构,包含承载网络的信息:
struct _HostedNetworkInfo {
bool Active;
char SSID[32]; //字符串最大长度(包括末尾的\0):31字节 (亲自测试得到的结论)
bool IsPassPhase; //true:密码是字符串(8到63个ascii字符 + '\0')。false:密码是长度为32字节的二进制数据。
char Key[64]; //如果IsPassPhase为false,则Key不是字符串,而是长度为32字节的二进制数据。
unsigned int NumberOfPeers; //当前连接数
unsigned int MaxNumberOfPeers; //最大连接数
DOT11_AUTH_ALGORITHM dot11AuthAlgo; //认证方式
DOT11_CIPHER_ALGORITHM dot11CipherAlgo; //加密算法
};