gpt4 book ai didi

c# - 如何设置连接到主机 PC 的设备的 IP 地址? C# 窗体?

转载 作者:可可西里 更新时间:2023-11-01 02:51:26 28 4
gpt4 key购买 nike

我有一个 Modbus TCP/IP 到 MODBUS RTU 转换器,其默认 IP 为 192.168.0.1。我需要开发一个小型 c# Winform 应用程序来将此设备的 IP 地址更改为任何所需的 IP 地址。我该怎么做?

最佳答案

您可以使用 WMI ( Windows Management Instrumentation )。

首先,您必须将对 System.Management 的引用添加到您的项目中。

其次,您需要通过名称为您的网络连接找到NetworkInterface:

using System.Net.NetworkInformation;
using System.Management;

public class NetworkManager
{
public static NetworkInterface GetNetworkInterface(string sName)
{
NetworkInterface NetInterface = null;

// Precondition
if (sName == "") return null;

NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface ni in interfaces)
{
if (ni.Name == sName)
{
NetInterface = ni;
break;
}
}

return NetInterface;
}

第三,您必须为您的 NetworkInterface 创建一个 ManagementObject:

    public static ManagementObject GetNetworkAdapterManagementObject(NetworkInterface NetInterface)
{
ManagementObject oMngObj = null;

// Precondition
if (NetInterface == null) return null;

string sNI = NetInterface.Id;

ManagementClass oMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection oMOC = oMC.GetInstances();

foreach (ManagementObject oMO in oMOC)
{
string sMO = oMO["SettingID"].ToString();
if (sMO == sNI)
{
// Found
oMngObj = oMO;
break;
}
}

return oMngObj;
}

四,你可以设置ipadress:

    public static bool SetIPAdress(ManagementObject oMO, string[] saIPAdress, string[] saSubnetMask)
{
bool bErg = false;
try
{
// Precondition
if (oMO == null) return false;
if (saIPAdress == null) return false;
if (saSubnetMask == null) return false;

// Get ManagementBaseObject
ManagementBaseObject oNewIP = null;
oNewIP = oMO.GetMethodParameters("EnableStatic");

oNewIP["IPAddress"] = saIPAdress;
oNewIP["SubnetMask"] = saSubnetMask;

// Invoke
oMO.InvokeMethod("EnableStatic", oNewIP, null);

// Alles ok
bErg = true;
}
catch (Exception ex)
{
Console.WriteLine("SetIPAdress failed: " + ex.Message);
}

return bErg;
}
}

现在您可以使用它,例如在按钮单击事件处理程序中:

private void button1_Click(object sender, EventArgs e)
{
string sConn = "LAN-Verbindung";
NetworkInterface oNI = NetworkManager.GetNetworkInterface(sConn);
ManagementObject oMO = NetworkManager.GetNetworkAdapterManagementObject(oNI);

string sIPAdress = "192.168.1.1";
string sSubnetMask = "255.255.255.0";
string[] saIPAdress = {sIPAdress};
string[] saSubnetMask = {sSubnetMask};
if (NetworkManager.SetIPAdress(oMO, saIPAdress, saSubnetMask))
{
Console.WriteLine("Yes...");
}
}

根据您电脑上的政策,您可能必须以管理员身份运行该程序...

关于c# - 如何设置连接到主机 PC 的设备的 IP 地址? C# 窗体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34333683/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com