C/C++利用netsh设置动态IP和静态IP

2024-01-31 11:38
文章标签 动态 c++ ip 设置 静态 netsh

本文主要是介绍C/C++利用netsh设置动态IP和静态IP,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在使用电脑时我们可以根据在更改以太网Internet协议版本4(TCP/IP)的属性来设置动态IP和静态IP

在这里插入图片描述
在这里插入图片描述

但是这样做很麻烦,我们可以通过程序来更改静态IP和动态IP,只需要一条简单的代码就可以实现。

静态IP:

system("cmd /c netsh interface ip set address \"以太网\" static 192.168.1.10 255.255.255.0 192.168.1.1");

动态IP:

system("cmd /c netsh interface ip set address name = \"以太网\" source = dhcp");
system("netsh interface ip set dns name = \"以太网\" source = dhcp");

显示所有网络适配器(网卡、拨号连接等)的完整TCP/IP配置信息:

system("ipconfig /all");

注意:“以太网”是根据网络连接文件夹中的名称来命名的,有的是本地连接!!!

在这里插入图片描述

根据这两条指令可以制作一个简单的设置IP状态的小程序

测试结果:
在这里插入图片描述

1.设置静态IP

运行程序,输入1,再次输入IP地址,子网掩码,默认网关,提示静态IP设置成功。
找到以太网Internet协议版本4(TCP/IP)的属性看到设置成功。
在这里插入图片描述

2.输入2设置动态IP

运行程序,输入2,提示动态IP设置成功。
找到以太网Internet协议版本4(TCP/IP)的属性看到设置成功。在这里插入图片描述

C代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>int main()
{system("ipconfig /all");printf("\n");printf("------------------------------------------------------------------------\n");printf("设置静态IP输入:1\n");printf("设置动态IP输入:2\n");printf("------------------------------------------------------------------------\n");printf("请输入:");int model = 0;scanf_s("%d", &model);while (model != 1 && model != 2){printf("输入无效,请重新输入\n");printf("------------------------------------------------------------------------\n");printf("请输入:");scanf_s("%d", &model);if (model == 1 || model == 2)break;}if (model == 1)				//设置静态IP{char *ret = (char*)malloc(128);memset(ret, 0, sizeof(ret));char static_ip_1[] = "cmd /c netsh interface ip set address \"以太网\" static";char space[] = " ";printf("输入IP地址(192.168.1.110):");char static_ip_2[20];scanf_s("%s", static_ip_2, 20);		printf("输入子网掩码(255.255.255.0):");char static_mask[20];scanf_s("%s", static_mask, 20);		printf("输入默认网关(192.168.1.1):");char static_gateway[20] = "";scanf_s("%s", static_gateway, 20);int len1 = strlen(static_ip_1) + 1;strcat_s(ret, len1, static_ip_1);//"cmd /c netsh interface ip set address \"以太网\" static"int len2 = strlen(ret) + strlen(space) + 1;strcat_s(ret, len2, space);//"cmd /c netsh interface ip set address \"以太网\" static "int len3 = strlen(ret) + strlen(static_ip_2) + 1;strcat_s(ret, len3, static_ip_2);//"cmd /c netsh interface ip set address \"以太网\" static 192.168.1.110"int len4 = strlen(ret) + strlen(space) + 1;strcat_s(ret, len4, space);//"cmd /c netsh interface ip set address \"以太网\" static 192.168.1.110 "int len5 = strlen(ret) + strlen(static_mask) + 1;strcat_s(ret, len5, static_mask);//"cmd /c netsh interface ip set address \"以太网\" static 192.168.1.110 255.255.255.0"int len6 = strlen(ret) + strlen(space) + 1;strcat_s(ret, len6, space);//"cmd /c netsh interface ip set address \"以太网\" static 192.168.1.110 255.255.255.0 192.168.1.1"int len7 = strlen(ret) + strlen(static_gateway) + 1;strcat_s(ret, len7, static_gateway);system(ret);free(ret);printf("静态IP设置成功\n");printf("------------------------------------------------------------------------\n");}else if (model == 2)		//设置动态IP{system("cmd /c netsh interface ip set address name = \"以太网\" source = dhcp");printf("动态IP设置成功\n");printf("------------------------------------------------------------------------\n");}else{printf("输入错误\n");}
}

C++代码:

#include <iostream>//分割线
void PrintLine()
{std::cout << "------------------------------------------------------------------------\n";
}int main()
{system("ipconfig /all");std::cout << std::endl;PrintLine();std::cout << "设置静态IP输入:1\n";std::cout << "设置动态IP输入:2\n";PrintLine();int model = 0;while (1){std::cout << "请输入:";std::cin >> model;if (model == 1 || model == 2)break;std::cout << "输入无效,请重新输入\n";PrintLine();}if (model == 1)				//设置静态IP{std::string static_prefix = "cmd /c netsh interface ip set address \"以太网\" static";std::string static_ip, static_mask, static_gateway;std::cout << "输入IP地址(192.168.1.110):";std::cin >> static_ip;std::cout << "输入子网掩码(255.255.255.0):";std::cin >> static_mask;std::cout << "输入默认网关(192.168.1.1):";std::cin >> static_gateway;std::string static_ret = static_prefix + " " + static_ip + " " + static_mask + " " + static_gateway;const char* ret = static_ret.c_str();system(ret);std::cout << "静态IP设置成功\n";PrintLine();}else if (model == 2)		//设置动态IP{system("cmd /c netsh interface ip set address name = \"以太网\" source = dhcp");std::cout << "动态IP设置成功\n";PrintLine();}else{std::cout << "输入错误\n";}return 0;
}

这篇关于C/C++利用netsh设置动态IP和静态IP的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/663631

相关文章

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

C#如何调用C++库

《C#如何调用C++库》:本文主要介绍C#如何调用C++库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录方法一:使用P/Invoke1. 导出C++函数2. 定义P/Invoke签名3. 调用C++函数方法二:使用C++/CLI作为桥接1. 创建C++/CL

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代