网络编程获取本机IP地址和指定域名IP地址
(完整)一键切换自动获取IP址和指定IP地址脚本

一键切换自动获取IP址和指定IP地址脚本指定IP地址—-—----—-----——---——-——--———---——--—----——-—----—-——@echo offnetsh interface ip set address name=”本地连接" source=static addr=192。
168。
1.2 mask=255。
255.255。
0 gateway=192.168。
1.1 gwmetric=1netsh interface ip set dns name="本地连接” source=static addr=202。
103.24.68 register=primary —--—--—---—-----——--—--——--——---—多IP地址切换,只需分别将上述脚本写出即可.自动获取IP地址------—--—-———-————-—---—-——-——-—--—---@echo offnetsh interface ip set address name="本地连接” source=dhcpnetsh interface ip set dns name=”本地连接" source=dhcp-———--——-——-—-—-------————--——--—-—————--—分别将虚线间的内容写入记事本,存为“.bat”文件。
=========================下面为说明文件1。
怎样修改IP地址和网关:set address name="本地连接”source=static addr=192.168。
1.2 mask=255。
255.255。
0 gatewa y=192。
168.1.1 gwmetric=1确定。
命令:set address name="本地连接”source=static addr=192。
C#获取本机IP的6种方法

C#获取本机IP的6种方法print?1、//GetHostNameprivate void GetIP(){string hostName = Dns.GetHostName();//本机名//.IPAddress[] addressList = Dns.GetHostByName(hostName).AddressList;//会警告GetHostByName()已过期,我运行时且只返回了一个IPv4的地址.IPAddress[] addressList = Dns.GetHostAddresses(hostName);//会返回所有地址,包括IPv4和IPv6foreach (IPAddress ip in addressList){listBox1.Items.Add(ip.ToString());}}1、//GetHostNameprivate void GetIP(){string hostName = Dns.GetHostName();//本机名//.IPAddress[] addressList = Dns.GetHostByName(hostName).AddressList;//会警告GetHostByName()已过期,我运行时且只返回了一个IPv4的地址.IPAddress[] addressList = Dns.GetHostAddresses(hostName);//会返回所有地址,包括IPv4和IPv6foreach (IPAddress ip in addressList){listBox1.Items.Add(ip.ToString());}}2、使用IPHostEntry获取本机局域网地址[csharp]static string GetLocalIp(){string hostname = Dns.GetHostName();//得到本机名//IPHostEntry localhost = Dns.GetHostByName(hostname);//方法已过期,只得到IPv4的地址IPHostEntry localhost = Dns.GetHostEntry(hostname);IPAddress localaddr = localhost.AddressList[0];return localaddr.ToString();}static string GetLocalIp(){string hostname = Dns.GetHostName();//得到本机名//IPHostEntry localhost = Dns.GetHostByName(hostname);//方法已过期,只得到IPv4的地址IPHostEntry localhost = Dns.GetHostEntry(hostname);IPAddress localaddr = localhost.AddressList[0];return localaddr.ToString();}3、获取本机网络ip地址[csharp]string strUrl = "提供IP查询的网站的链接";Uri uri = new Uri(strUrl);WebRequest webreq = WebRequest.Create(uri);Stream s = webreq .GetResponse().GetResponseStream();StreamReader sr = new StreamReader(s, Encoding.Default);string all = sr.ReadToEnd();int i = all.IndexOf("[") + 1;//分析字符串得到IPreturn ip;/*我用的是/getip.php?action=getip&ip_url=&from=web(这种链接很容易找的,百度“IP”得到一些网站,分析一下网站的链接就能得到)返回的数据是:<div class="well"><p>当前IP:<code>0.0.0.0</code> 来自:XX省XX市电信</p><p>GeoIP: Beijing, China</p></div>解析这段就行*/string strUrl = "提供IP查询的网站的链接";Uri uri = new Uri(strUrl);WebRequest webreq = WebRequest.Create(uri);Stream s = webreq .GetResponse().GetResponseStream();StreamReader sr = new StreamReader(s, Encoding.Default);string all = sr.ReadToEnd();int i = all.IndexOf("[") + 1;//分析字符串得到IPreturn ip;/*我用的是/getip.php?action=getip&ip_url=&from=web(这种链接很容易找的,百度“IP”得到一些网站,分析一下网站的链接就能得到)返回的数据是:<div class="well"><p>当前IP:<code>0.0.0.0</code> 来自:XX省XX市电信</p><p>GeoIP: Beijing, China</p></div>解析这段就行*/4、//由于用到了ManagementClass、ManagementObjectCollection;必须添加引用System.Management.dll及using System.Management;[csharp] view plaincopyprint?private void GetIP2(){string stringMAC = "";string stringIP = "";ManagementClass managementClass = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection managementObjectCollection = managementClass.GetInstances(); foreach(ManagementObject managementObject in managementObjectCollection){if ((bool)managementObject["IPEnabled"] == true){stringMAC += managementObject["MACAddress"].ToString();string[] IPAddresses = (string[])managementObject["IPAddress"];if (IPAddresses.Length > 0){stringIP = IPAddresses[0];}}}txtMAC.Text = stringMAC.ToString();txtIP.Text = stringIP.ToString();}private void GetIP2(){string stringMAC = "";string stringIP = "";ManagementClass managementClass = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection managementObjectCollection = managementClass.GetInstances(); foreach(ManagementObject managementObject in managementObjectCollection){if ((bool)managementObject["IPEnabled"] == true){stringMAC += managementObject["MACAddress"].ToString();string[] IPAddresses = (string[])managementObject["IPAddress"];if (IPAddresses.Length > 0){stringIP = IPAddresses[0];}}}txtMAC.Text = stringMAC.ToString();txtIP.Text = stringIP.ToString();}5、通过获取CMD里ipconfig命令的结果来得到IP[csharp]private void GetIP6(){Process cmd = new Process();cmd.StartInfo.FileName = "ipconfig.exe";//设置程序名cmd.StartInfo.Arguments = "/all"; //参数//重定向标准输出cmd.StartInfo.RedirectStandardOutput = true;cmd.StartInfo.RedirectStandardInput = true;eShellExecute = false;cmd.StartInfo.CreateNoWindow = true;//不显示窗口(控制台程序是黑屏)//cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;//暂时不明白什么意思/*收集一下有备无患关于:ProcessWindowStyle.Hidden隐藏后如何再显示?hwndWin32Host = Win32Native.FindWindow(null, win32Exinfo.windowsName);Win32Native.ShowWindow(hwndWin32Host, 1); //先FindWindow找到窗口后再ShowWindow */cmd.Start();string info = cmd.StandardOutput.ReadToEnd();cmd.WaitForExit();cmd.Close();textBox1.AppendText(info);}private void GetIP6(){Process cmd = new Process();cmd.StartInfo.FileName = "ipconfig.exe";//设置程序名cmd.StartInfo.Arguments = "/all"; //参数//重定向标准输出cmd.StartInfo.RedirectStandardOutput = true;cmd.StartInfo.RedirectStandardInput = true;eShellExecute = false;cmd.StartInfo.CreateNoWindow = true;//不显示窗口(控制台程序是黑屏)//cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;//暂时不明白什么意思/*收集一下有备无患关于:ProcessWindowStyle.Hidden隐藏后如何再显示?hwndWin32Host = Win32Native.FindWindow(null, win32Exinfo.windowsName);Win32Native.ShowWindow(hwndWin32Host, 1); //先FindWindow找到窗口后再ShowWindow */cmd.Start();string info = cmd.StandardOutput.ReadToEnd();cmd.WaitForExit();cmd.Close();textBox1.AppendText(info);}6、NetworkInformation[csharp]private void GetIP5(){//需要的命名空间//using workInformation;//using .Sockets;string str = "";NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces(); int i = 0;foreach (NetworkInterface adapter in adapters){IPInterfaceProperties adapterProperties = adapter.GetIPProperties(); UnicastIPAddressInformationCollection allAddress = adapterProperties.UnicastAddresses;if (allAddress.Count > 0){str += "interface " + i + "description:\n\t " + adapter.Description + "\n ";i++;foreach (UnicastIPAddressInformation addr in allAddress){if (addr.Address.AddressFamily == AddressFamily.InterNetworkV6){ipListComb.Items.Add(addr.Address);}if (addr.Address.AddressFamily == AddressFamily.InterNetwork){comboBox1.Items.Add(addr.Address);}}}}MessageBox.Show(str);}private void GetIP5(){//需要的命名空间//using workInformation;//using .Sockets;string str = "";NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces(); int i = 0;foreach (NetworkInterface adapter in adapters){IPInterfaceProperties adapterProperties = adapter.GetIPProperties(); UnicastIPAddressInformationCollection allAddress = adapterProperties.UnicastAddresses;if (allAddress.Count > 0){str += "interface " + i + "description:\n\t " + adapter.Description + "\n ";i++;foreach (UnicastIPAddressInformation addr in allAddress){if (addr.Address.AddressFamily == AddressFamily.InterNetworkV6){ipListComb.Items.Add(addr.Address);}if (addr.Address.AddressFamily == AddressFamily.InterNetwork){comboBox1.Items.Add(addr.Address);}}}}MessageBox.Show(str);}。
C#获取本地IP的四种方式示例详解

C#获取本地IP的四种⽅式⽰例详解1.第⼀种⽅式采⽤.Dns的GetHostAddress的⽅式,具体请看代码:/// <summary>/// ⽹络不通畅可以获取/// 不过能获取到具体的IP/// </summary>/// <returns></returns>public static List<IPAddress> GetByGetHostAddresses(){try{IPAddress[] adds = Dns.GetHostAddresses(Dns.GetHostName());return adds == null || adds.Length == 0 ? new List<IPAddress>() : adds.ToList<IPAddress>();}catch (Exception){return new List<IPAddress>();}}这种⽅式受到⽹络的影响,如果没有连接到⽹络,本地配置的部分IP是获取不到的,我也遇到⼀种情况是,电脑环境正常,就是获取不到,原因⾄今还不知道;2.第⼆种⽅式采⽤System.Management.ManagementClass来获取,详细请看代码:/// <summary>/// 只有⽹络通畅才能获取/// </summary>/// <returns></returns>public static List<IPAddress> GetByManagementClass(){try{ManagementClass mClass = new System.Management.ManagementClass("Win32_NetworkAdapterConfiguration");ManagementObjectCollection managementObjectCollection = mClass.GetInstances();List<IPAddress> ls = new List<IPAddress>();foreach (var item in managementObjectCollection){if ((bool)item["IPEnabled"] == true){foreach (var ip in (string[])item["IPAddress"]){IPAddress ipout = null;IPAddress.TryParse(ip, out ipout);if (ipout != null){ls.Add(ipout);}}}}return ls;}catch (Exception){return new List<IPAddress>();}}同样的这种⽅式也受到⽹络的约束,没有联⽹的状态下不⼀定能够获取到IP;3.第三种⽅式我们平时在命令⾏中输⼊ipconfig命令同样也是能获取,在程序中启动Ipconfig应⽤程序,然后解析出来,也是可以获取得到IP,详细请看代码:public static List<IPAddress> GetByCMD(){try{Process cmd = new Process();cmd.StartInfo.FileName = "ipconfig.exe";cmd.StartInfo.Arguments = "/all";cmd.StartInfo.RedirectStandardOutput = true;cmd.StartInfo.RedirectStandardInput = true;eShellExecute = false;cmd.StartInfo.CreateNoWindow = true;cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;cmd.Start();string info = "";List<IPAddress> ls = new List<IPAddress>();// info = cmd.StandardOutput.ReadToEnd();Regex validipregex = new Regex(@"\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}");//new Regex(@"^(([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$");while ((info = cmd.StandardOutput.ReadLine()) != null){IPAddress ip = null;Console.WriteLine(info);info = validipregex.Match(info).Value;IPAddress.TryParse(info, out ip);if (ip != null){ls.Add(ip);}}cmd.WaitForExit();cmd.Close();return ls;}catch (Exception){return new List<IPAddress>();}}即便是通过这种⽅式来获取IP,如果在本机电脑没有联⽹的状态下,也是获取不到IP的,并且也不太建议使⽤这种⽅式;4.第四种⽅法采⽤NetworkInterface.GetAllNetworkInterfaces的⽅式是不受⽹络的影响的,联⽹或者不联⽹都能够获取到IP,详细请看代码:/// <summary>/// ⽆论⽹络通不通都能获取到Ip/// </summary>/// <returns></returns>public static List<IPAddress> GetByNetworkInterface(){try{NetworkInterface[] intf = NetworkInterface.GetAllNetworkInterfaces();List<IPAddress> ls = new List<IPAddress>();foreach (var item in intf){IPInterfaceProperties adapterPropertis = item.GetIPProperties();UnicastIPAddressInformationCollection coll = adapterPropertis.UnicastAddresses;foreach (var col in coll){ls.Add(col.Address);}}return ls;}catch (Exception){return new List<IPAddress>();}}以上所说的联⽹,包括连接在局域⽹中。
如何获取本机IP

如何获取本机IPGetLocalHost直接通过InetAddress.getLocalHost()来获取,其主要逻辑如下InetAddress.getLocalHost();String hostname = impl.getLocalHostName();if(hostname.equals("localhost")){return impl.loopvacjAddress();}InetAddress.getAddressesFromNameService(hostname, null);nameService.lookupAllHostAddr(host);在linux中的hostname是个变量,由系统初始化的时候, 在shell启动脚本 “/etc/rc.d/rc.sysinit” 中实现,主要是读取“/etc/sysconfig/network” 中的HOSTNAME的值可以通过命令hostname xxx修改 hostname。
这⾥有⼏个注意点:1. 如果⽂件中没有hostname,那么会使⽤默认的localhost2. 如果发现hostname的值是localhost 或者 localhost.localdomain,根据⾃⼰的实际ip查找/etc/hosts中这个ip对应的hostname。
3. 如果没有,则使⽤localhost 或者localhost.localdomain如果hostname是localhost,就会直接返回环回地址,如IPv4的127.0.0.1如果不是的话,则会先看缓存⾥的CachedLocalHost的值,如果缓存的时间离现在⼩于5s的话,则直接返回缓存⾥的内容,如果间隔时间超过5s,则重新查询重新查询是通过NameService去获取IP地址的,具体的实现类是DNSNameService,其中NameServices是InetAddress是成员变量,通过static代码块初始化的主要实现都是通过native的系统调⽤,查看/etc/resolv.conf下配置的nameserver和/etc/hosts下⾯的配置,然后使⽤DNS协议查询,查询后将其缓存。
VC编程-获取当前外网IP地址和主机名

收集整理
/******************************************************************* *****/ /* 函数说明:获取当前外网 IP 地址 /* 参 数:无 /* 返 回 值:返回外网 IP 地址、CString 类型字符串 /* By:Koma 2009.08.21 14:12 //用 3322 获取外网 IP 最为方便,直接读取网页源码,不用查找,网页源码就是外网 IP /*********************************************************************** */ CString GetIP(CString site)//读取网页源码的函数 {
C#获取计算机名跟IP地址

bel1 = new bel ( ) ;
bel2 = new bel ( ) ;
//先继承一个Label 类
label1.Location = new System.Drawing.Point ( 24 , 16 ) ;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D ;
// 设定窗体的边界类型
this.ForeColor = System.Drawing.SystemColors.Desktop ;
this.Font = new System.Drawing.Font ( "宋体" , 10 , System.Drawing.FontStyle.Bold ) ;
//先继承一个Label 类
label1.Location = new System.Drawing.Point ( 24 , 16 ) ;
label2.Location = new System.Drawing.Point ( 44 , 36 ) ;
//设定 Label的显示位置
label1.Text = "主机名称:" .Dns.GetHostName ( ) ;
this.Controls.Add ( bel1 ) ;
this.Controls.Add ( bel2 ) ;
}
private static string getIPAddress ( )
{
.IPAddress addr;
// 获得本机局域网IP地址
在前面已经说了,GetHostByName ( )方法的返回值时IPHostEntry 对象,此对象的属性 AddressList,是一个IPAddress类型的数组,包含了计算机此时的所有的IP地址信息。在ip01.cs中AddressList [0].Address是固定的IP地址,而对于上网动态分配的IP地址是.AddressList [1].Address。据此我们可以的得到读取拨号上网动态分配的IP地址的源程序:
基础函数_Windows网络编程(第2版)_[共3页]
![基础函数_Windows网络编程(第2版)_[共3页]](https://img.taocdn.com/s3/m/4898212904a1b0717ed5dd49.png)
第11章设计局域网探测器局域网探测器可以帮助网络管理员探测子网中包含的网络设备和计算机,并获取计算机的基本信息,检测IP地址的在线状态,这些都可以帮助网络管理员更方便地对网络进行管理和日常维护。
本章将介绍设计和实现局域网探测器的方法。
11.1 局域网探测器的主要功能顾名思义,局域网探测器的主要功能是探测局域网中有哪些在线设备,并获取网络中计算机的基本信息,包括IP地址、MAC地址、主机名和所属工作组等。
本实例中介绍的局域网探测器主要包含如下功能模块。
1.获取本地网络信息程序可以自动获取本地IP地址和子网掩码,并计算出本地子网。
2.子网管理局域网是由若干个子网组成的,用户可以手动添加、修改和删除子网,但不允许对本地子网执行修改和删除操作。
3.子网扫描对选择的子网进行扫描。
首先根据网络地址和子网掩码计算出该子网中包含的所有IP地址,然后批量执行ping操作,检测IP地址是否在线。
最后在列表中显示当前在线的IP地址信息。
4.获取子网中计算机的基本信息通过发送NetBIOS请求包获取远程计算机的基本信息,包括MAC地址、名字、所属工作组等信息,然后将这些信息显示在设备列表中。
5.检测设备的在线状态对子网中已经发现的设备执行ping操作,检测其在线状态,并显示在设备列表中。
11.2 基础模块设计为了实现探测在线设备和获取设备基本信息的功能,需要设计一些基础模块,包括一些基础函数、本地主机类CLocalhost、设备信息类CDevice和子网信息类CSubnet。
本节将介绍这些基础模块的实现方法。
313。
C语言获取计算机的IP地址

C语言获取计算机的IP地址获取计算机的IP地址是计算机网络编程中的一个重要环节。
在C语言中,可以通过调用操作系统提供的网络相关的函数来获取IP地址。
下面将介绍在Windows和Linux操作系统上获取IP地址的方法。
一、Windows平台:Windows平台上获取IP地址可以使用Winsock库提供的函数。
下面是一个使用Winsock库获取IP地址的示例代码:```c#include <stdio.h>#include <winsock2.h>int maiWSADATA wsaData;int iResult;char hostname[256];struct hostent* host;char* ip;// 初始化Winsock库iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);if (iResult != 0)printf("WSAStartup failed: %d\n", iResult);return 1;}//获取本机主机名iResult = gethostname(hostname, sizeof(hostname));if (iResult != 0)printf("gethostname failed: %d\n", WSAGetLastError(); WSACleanup(;return 1;}//根据主机名获取主机信息host = gethostbyname(hostname);if (host == NULL)printf("gethostbyname failed: %d\n", WSAGetLastError(); WSACleanup(;return 1;}//获取IP地址字符串ip = inet_ntoa(*(struct in_addr*)host->h_addr_list[0]);printf("IP Address: %s\n", ip);// 释放Winsock库资源WSACleanup(;return 0;```该示例代码使用了Winsock库提供的函数`gethostname`和`gethostbyname`来获取本机主机名和主机信息,然后通过`inet_ntoa`函数将主机信息中的IP地址转换为字符串打印出来。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网络编程技术实验报告
实验名称实验一网络编程基础训练
实验报告要求: 1.实验目的 2.实验要求 3.实验环境 4.实验作业 5.问题及解决
6.思考问题
7.实验体会
【实验目的】
掌握Wireshark的基本用法,掌握netstat的基本用法,能够使用这些工具对网络应用程序的传输过程进行捕获、观察和状态分析;了解Windows Sockets API的基本函数功能,掌握Windows Sockets的编程环境配置,掌握网络程序设计的基本过程。
【实验要求】
1、下载安装Wireshark,熟悉捕获、查看、过滤、查找等基本方法,对用户飞秋文件
传输、文字聊天等行为进行网络通信过程分析。
2、熟悉netstat命令,查看用户使用网络应用程序过程中对系统网络状态的改变。
3、使用Windows Sockets的API函数获得本机的IP地址。
4、使用Windows Sockets的API函数获得给定域名的IP地址。
【实验环境】
1.飞秋数据包的捕获用Wireshark;
2.Windows8自带命令提示符;
3.VS 2012编写程序。
【实验作业】
NO.1:飞秋文件传输、文字聊天等行为分析
1.数据包捕获:
2.飞秋文件传输、文字聊天的网络通信过程分析:
1)通过广播方式,查询局域网内所有主机的MAC地址,采用ARP协议,解析目标IP地址
为10.104.113.130的主机:
2) IP地址为10.104.113.130的主机回应请求,告知本机的MAC地址
从而无连接的通信建立了。
传输层协议为UDP。
3)IP地址为10.104.113.130的主机给请求端发送数据(首部为8字节;数据部分72字节):
以太网层使用的是MAC地址
网络层传输用的鉴别机制为IP地址。
NO.2:netstat命令测试系统网络状态的改变
netstat命令:
a)显示所有连接和侦听的端口:
b)应用程序对系统网络状态的改变:
NO.3:利用Windows Socket的API函数获取本机IP和指定域名的IP地址:
利用C#网络编程提供的API,完成获取本机IP地址和指定域名IP地址的任务。
代码及执行情况,见Src文件和exe文件。
using System;
using System.Collections.Generic;
using System.Text;
using ;
using .Sockets;
using System.Runtime.InteropServices;
namespace WindowsSocket_1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入要查询域名");
string dnsName=Console .ReadLine();
IsNetConnecting netconnect = new IsNetConnecting();
bool NetConnect = netconnect.IsConnected();
Program winsocket=new Program();
if (NetConnect == true)
{
string localIP = winsocket.GetHostIP();
Console.WriteLine("本机IP地址:" + localIP);
winsocket.Resolve(dnsName);
for (int i = 0; i < winsocket.IPLength; i++)
Console.WriteLine("对应域名的IP地址[" + (i + 1) + "]为:" + winsocket.m_arrayIPs[i]);
}
else {
Console.WriteLine("当前网络连接不可用。
无法获取本机IP地址和指定域名的IP地址");
}
Console.Read();
}
#region 获取主机IP地址
public string GetHostIP(){
string strHostName = Dns.GetHostName(); //获取本地计算机名称
Console.WriteLine("本地计算机名:" + strHostName); //由本地计算机名称获取本机IP地址
IPHostEntry ipEntry = Dns.GetHostEntry(strHostName);
return ipEntry.AddressList[2].ToString(); //返回本机IP地址Console.ReadKey();
}
#endregion
#region 获取已知域名的IP地址
IPAddress[] m_arrayIPs;
public void Resolve(string s_host)
{
IPHostEntry ip = Dns.GetHostByName(s_host);
m_arrayIPs = ip.AddressList;
}
public IPAddress this[int nIndex] {
get {
return m_arrayIPs[nIndex];
}
}。