网络编程获取本机IP地址和指定域名IP地址
- 格式:doc
- 大小:393.50 KB
- 文档页数:9
一键切换自动获取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种方法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的四种⽅式⽰例详解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>();}}以上所说的联⽹,包括连接在局域⽹中。
如何获取本机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协议查询,查询后将其缓存。
第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地址获取计算机的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地址转换为字符串打印出来。
获取ip地址的命令一、DOS操作系统下的命令行查询IP地址。
1、输入“ipconfig”查看IP信息:在DOS界面下,可以输入“ipconfig”命令,查看当前电脑的IP地址,子网掩码,默认网关等信息,其中IP地址信息一般出现在“以太网适配器本地连接:”下面,即“IPv4 地址”一栏。
2、输入“hostname”查看主机名:输入“hostname”命令,可以查看当前电脑(主机)的主机名,例如“DESKTOP-VRPC1KL”。
3、输入“ping 主机名”获取IP地址:在DOS界面下,可以输入“ping 主机名”,如“ping DESKTOP-VRPC1KL”,可以获取该主机的IP地址,如“192.168.1.100”等地址。
二、Linux操作系统下的命令行查询IP地址。
1、输入“ifconfig”查看IP信息:在Linux系统下,可以输入“ifconfig”命令,查看当前电脑的IP地址、子网掩码、默认网关等信息,例如“inet addr: 192.168.1.100”,以及其它网卡信息。
2、输入“cat/proc/net/arp”查看IP信息:在Linux系统下,可以借助“cat/proc/net/arp”指令,查看当前电脑的IP地址、MAC地址、网关等信息,例如“192.168.1.10000:0a:be:c3:43:15 0x2 C eth0”。
3、输入“hostname”查看主机名:输入“hostname”命令,可以查看当前电脑(主机)的主机名,例如“server01”。
4、输入“ping 主机名”获取IP地址:在Linux系统下,也可以输入“ping 主机名”,如“pingserver01”。
(原创实用版4篇)编制人员:_______________审核人员:_______________审批人员:_______________编制单位:_______________编制时间:____年___月___日序言下面是本店铺为大家精心编写的4篇《java获取ip的方法》,供大家借鉴与参考。
下载后,可根据实际需要进行调整和使用,希望能够帮助到大家,谢射!(4篇)《java获取ip的方法》篇1在 Java 中,获取 IP 地址的方法因场景而异。
如果你是在服务器端获取客户端的 IP 地址,可以使用 request.getRemoteAddr() 方法。
但是如果客户端通过代理服务器访问,这个方法获取到的可能是代理服务器的 IP 地址。
此时可以使用 request.getHeader("X-Forwarded-For") 方法获取客户端真实的 IP 地址。
如果客户端未通过代理服务器访问,则可以直接使用request.getRemoteAddr() 方法获取客户端的 IP 地址。
如果你是在客户端获取自己的 IP 地址,可以使用 NetworkInterface 类和InetAddress 类。
首先获取网络接口列表,然后遍历列表中的每一个网络接口,使用 InetAddress 类获取该网络接口的 IP 地址。
最后将获取到的 IP 地址打印出来即可。
《java获取ip的方法》篇2在 Java 中,获取 IP 地址的方法因场景而异。
如果你是在服务器端获取客户端的 IP 地址,可以使用 request.getRemoteAddr() 方法。
但是如果客户端通过代理服务器访问,这个方法返回的将是代理服务器的 IP 地址。
此时可以使用 request.getHeader("X-Forwarded-For") 方法获取客户端真实的 IP 地址。
如果客户端未通过代理服务器访问,则可以直接使用 request.getRemoteAddr() 方法获取客户端的 IP 地址。
JAVA如何获取客户端IP地址和MAC地址在Java中获取客户端IP地址和MAC地址需要使用Java的网络编程API,具体步骤如下:1.获取客户端IP地址获取客户端IP地址有多种方法,下面介绍两种常用的方法。
方法1:使用`InetAddress`类的`getLocalHost`方法```javaInetAddress localIp = InetAddress.getLocalHost(;String ip = localIp.getHostAddress(;System.out.println("客户端的IP地址是:" + ip);```方法2:使用`HttpServletRequest`类的`getRemoteAddr`方法```javaString ip = request.getRemoteAddr(;System.out.println("客户端的IP地址是:" + ip);```获取客户端MAC地址需要通过运行操作系统的命令来获取,下面介绍一种通用的方法。
方法:使用`InetAddress`类的`getByName`方法和`NetworkInterface`类的`getHardwareAddress`方法```javaInetAddress localHost = InetAddress.getByName("localhost");NetworkInterface networkInterface =NetworkInterface.getByInetAddress(localHost);byte[] mac = networkInterface.getHardwareAddress(;// 将mac地址转换成字符串形式StringBuilder sb = new StringBuilder(;for (int i = 0; i < mac.length; i++)sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));String macAddress = sb.toString(;System.out.println("客户端的MAC地址是:" + macAddress);```需要注意的是,获取MAC地址的方法在不同的操作系统上可能有所不同,在Linux、Windows等操作系统上应该是可行的,但在部分其他操作系统上可能无法获取MAC地址。
获得及设置本机的ip地址,子网掩码,网关,dns服务器信息(Delphi)1、//取IP地址function GetIP : string;typeTaPInAddr = array [0..10] of PInAddr;PaPInAddr = ^TaPInAddr;varphe : PHostEnt;pptr : PaPInAddr;Buffer : array [0..63] of char;I : Integer;GInitData : TWSADATA;beginWSAStartup($101, GInitData);Result := '';GetHostName(Buffer, SizeOf(Buffer));phe :=GetHostByName(buffer);if phe = nil then Exit;pptr := PaPInAddr(Phe^.h_addr_list);I := 0;while pptr^[I] <> nil do beginresult:=StrPas(inet_ntoa(pptr^[I]^));Inc(I);end;WSACleanup;end;2、获取路由、网关信息、网卡信息:Procedure TForm1.Button1Click(Sender:TObject);beginMemo1.Lines.Clear;if FileExists(Temp) thenDeleteFile(Temp);WinExec(PChar(' /C route print >'+Temp),SW_HIDE);while not FileExists(Temp) doSleep(1000)TryMemo1.Lines.LoadFromFile(Temp);exceptend;end;3、所有信息function LocalIP:string;typeTaPInAddr = array [0..10] of PInAddr;PaPInAddr = ^TaPInAddr;varphe : PHostEnt;pptr : PaPInAddr;Buffer : array [0..63] of char;I : Integer;GInitData : TWSADATA;beginWSAStartup($101, GInitData);Result := '';GetHostName(Buffer, SizeOf(Buffer));phe :=GetHostByName(buffer);if phe = nil then Exit;pptr := PaPInAddr(Phe^.h_addr_list);I := 0;while pptr^[I] <> nil do beginresult:=StrPas(inet_ntoa(pptr^[I]^));Inc(I);end;WSACleanup;end;program get_ip;useswinsock,sysutils;VARch : ARRAY[1..32] OF Char;i : Integer;WSData: TWSAData;MyHost: PHostEnt;beginIF WSAstartup(2,wsdata)<>0 THENBEGINWriteln('can''t start Winsock: Error ',WSAGetLastError); Halt(2);END;tryIF getHostName(@ch[1],32)<>0 THENBEGINWriteln('getHostName failed');Halt(3);END;exceptWriteln('getHostName failed');halt(3);end;MyHost:=GetHostByName(@ch[1]);IF MyHost=NIL THENBEGINWriteln(GetHostName('+StrPas(@ch[1])+') failed : Error '+IntT oStr(WSAGetLastError));Halt(4);ENDELSEBEGINWrite('address ');FOR i:=1 TO 4 DOBEGINWrite(Ord(MyHost.h_addr^[i-1]));IF i<4 THENthen write('.')ELSEwriteln;END;END;end.4、获取路由、网关信息、网卡信息:Procedure TForm1.Button1Click(Sender:TObject); beginMemo1.Lines.Clear;if FileExists(Temp) thenDeleteFile(Temp);WinExec(PChar(' /C route print >'+Temp),SW_HIDE);while not FileExists(Temp) doSleep(1000)TryMemo1.Lines.LoadFromFile(Temp);exceptend;end;5、MAC代码:procedure TForm1.Button1Click(Sender: TObject);VarNCB : TNCB;ADAPTER : TADAPTERSTATUS;LANAENUM : TLANAENUM;intIdx : Integer;re : Char;buf : String;beginTry{ ZeroMemory(@NCB, SizeOf(NCB));NCB.ncb_command := Chr(NCBENUM);re := NetBios(@NCB);// Reissue enum commandNCB.ncb_buffer := @LANAENUM;NCB.ncb_length := SizeOf(LANAENUM);re := NetBios(@NCB);If Ord(re)<>0 Thenexit;}{ Copyright (C) Bowman }{**********************}// Reset adapterZeroMemory(@NCB, SizeOf(NCB));NCB.ncb_command := Chr(NCBRESET);NCB.ncb_lana_num := na[0];//importantre := NetBios(@NCB);If Ord(re)<>0 Thenexit;// Get adapter addressZeroMemory(@NCB, SizeOf(NCB));NCB.ncb_command := Chr(NCBASTAT);NCB.ncb_lana_num := na[0];////bowmanStrPCopy(NCB.ncb_callname, '*');NCB.ncb_buffer := @ADAPTER;NCB.ncb_length := SizeOf(ADAPTER);re := NetBios(@NCB);If Ord(re)<>0 Thenexit;buf := '';For intIdx := 0 To 5 Dobuf := buf + InttoHex(Integer(ADAPTER.adapter_address[intIdx]),2)+'-';edit1.Text := copy(buf,0,length(buf)-1);FinallyEnd;end;6、取子网隐码:procedure TForm1.Button1Click(Sender: TObject);varreg:TRegistry;re:boolean;device:string;buf:pchar;mask:string;adapter:string;beginreg:=TRegistry.Create();tryReg.RootKey := HKEY_LOCAL_MACHINE;//open key//win NT//get bind devicere:=Reg.OpenKey('SYSTEM\CurrentControlSet\Services\Tcpi p\Linkage',false);if re thenbegingetmem(buf,1024);Reg.ReadBinaryData('Bind',buf^,1024);device := strpas(buf);freemem(buf);endelsebeginedit1.text:='Failed to get bind device';reg.closekey();reg.Free;exit;end;reg.CloseKey;//get adapteradapter:=copy(device,2,length(device)-1);showmessage(adapter);adapter:=copy(adapter,POS('\',adapter)+1,length(adapter)-POS('\',adapter));showmessage(adapter);//queryre:=Reg.OpenKey('SYSTEM\CurrentControlSet\Services\'+ adapter+'\Parameters\T cpip',false);if re thenbegingetmem(buf,1024);Reg.ReadBinaryData('SubnetMask',buf^,1024);mask := strpas(buf);freemem(buf);endmask:='Failed to get subnet mask';finallyReg.CloseKey;Reg.Free;end;edit1.text:=device;edit2.text:=mask;end;7、子网隐码WIn98下:procedure TForm1.Button1Click(Sender: TObject);varreg:TRegistry;re:boolean;mask:string;beginreg:=TRegistry.Create();tryReg.RootKey := HKEY_LOCAL_MACHINE;//open key//win 9xre:=Reg.OpenKey('System\CurrentControlSet\Services\Class \NetTrans\0000',false);if re thenbeginmask := Reg.Readstring('IPMask');endbeginedit1.text:='Failed to get mask';reg.closekey();reg.Free;exit;end;finallyReg.CloseKey;Reg.Free;end;edit1.text:=mask;end;8、这一段获得主机名字,IP地址等的代码====================================== =========unit hostName;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, Winsock;typeTForm1 = class(TForm)Edit1: TEdit;Label1: TLabel;Label2: TLabel;Edit2: TEdit;Edit3: TEdit;Label3: TLabel;Button1: TButton;procedure Button1Click(Sender: TObject); private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject); varIp:string;Ipstr:string;Buffer:Array[1..32] of char;i:integer;WSData:TWSAdata;Host:PHostEnt;beginif WSAstartup(2,WSData)<>0 thenShowMessage('WS2_32.DLL初始化失败!'); halt;end;tryif GetHostName(@Buffer[1],32)<>0 then beginShowMessage('没有得到主机名!');halt;end;exceptShowMessage('没有成功返回主机名'); halt;end;Host := GetHostByName(@Buffer[1]);if Host = nil thenbeginShowMessage('IP地址为空');halt;endelsebeginEdit2.Text := Host.h_name;Edit3.Text := Chr(Host.h_addrtype+64); for i:=1 to 4 dobeginIp:=IntT oStr(Ord(Host.h_addr^[i-1])); ShowMessage('分段IP地址为:'+Ip);if i<4 thenIpstr := Ipstr + Ip + '.'Edit1.Text:=Ipstr+Ip; end;end; WSACleanup; end;end.。
java 获取本机ip的方法Java 获取本机IP的方法介绍在开发Java应用程序时,有时候需要获取本机的IP地址。
本文将介绍几种获取本机IP的方法。
方法一:通过InetAddress类获取使用Java的InetAddress类可以获取到本机的IP地址。
以下是获取本机IP的代码片段:import ;import ;public class IPAddressExample {public static void main(String[] args) {try {InetAddress address = ();("IP Address: " + ());} catch (UnknownHostException e) {();}}}方法二:通过NetworkInterface类获取另一种获取本机IP地址的方法是使用Java的NetworkInterface 类。
以下是具体的代码示例:import ;import ;import ;import ;public class IPAddressExample {public static void main(String[] args) {try {Enumeration<NetworkInterface> networkInterfa ces = ();while (()) {NetworkInterface networkInterface = (); Enumeration<InetAddress> inetAddresses = ();while (()) {InetAddress address = ();if (!() && ()) {("IP Address: " + ());}}}} catch (SocketException e) {();}}}方法三:通过System类获取Java的System类提供了一个systemProperties变量,它包含一些系统相关的属性,其中就包括本机的IP地址。
获取ip地址的方法获取IP地址的方法。
IP地址(Internet Protocol Address)是指互联网协议地址,是分配给网络上的每一个设备的数字标识,用于在网络中定位设备。
获取IP地址是网络管理和故障排除中的重要步骤,下面将介绍几种获取IP地址的方法。
1. 通过命令提示符获取IP地址。
在Windows操作系统中,可以通过命令提示符来获取IP地址。
首先点击开始菜单,输入“cmd”打开命令提示符窗口,然后输入“ipconfig”命令并按下回车键。
系统将显示出本机的IP地址、子网掩码、默认网关等信息。
通过这种方法可以快速获取本机的IP地址,方便进行网络设置和故障排除。
2. 通过网络设置界面获取IP地址。
除了使用命令提示符,还可以通过操作系统的网络设置界面来获取IP地址。
在Windows操作系统中,可以在控制面板的网络和共享中心中找到网络适配器的设置,查看本机的IP地址和其他网络信息。
在Mac OS和Linux系统中,也可以通过类似的网络设置界面来获取IP地址。
3. 通过路由器管理界面获取IP地址。
在局域网中,设备的IP地址通常由路由器动态分配,可以通过路由器的管理界面来查看设备的IP地址分配情况。
首先在浏览器中输入路由器的管理地址,登录路由器管理界面,然后找到局域网设置或DHCP分配页面,查看已连接设备的IP地址信息。
通过这种方法可以了解局域网内设备的IP地址分配情况。
4. 通过网络工具获取IP地址。
除了以上方法,还可以使用一些网络工具来获取IP地址。
例如,可以使用网络扫描工具来扫描局域网内的设备,并获取其IP地址和其他网络信息。
此外,还可以使用网络监控工具来实时监控设备的IP地址变化情况,及时发现网络故障和安全问题。
总结。
获取IP地址是网络管理和故障排除中的重要步骤,可以通过命令提示符、网络设置界面、路由器管理界面和网络工具等多种方法来获取IP地址。
掌握这些方法可以帮助用户更好地管理和维护网络设备,保障网络的正常运行和安全性。
python获取本机所有IP地址的方法在Python中获取本机的所有IP地址有多种方法,以下是其中几种常用的方法:1. 使用socket模块获取本机IP地址:```pythonimport socketdef get_local_ip(:#创建TCP/IP套接字sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)ip_address = sock.getsockname([0]sock.closereturn ip_addressprint(get_local_ip()```这种方法通过创建TCP/IP套接字连接到外部服务器的方式获取本机IP地址。
2. 使用socket模块和网络接口获取本机IP地址:```pythonimport socketimport fcntlimport structdef get_local_ip(ifname):with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s: ip_address = socket.inet_ntoa(fcntl.ioctls.fileno(,0x8915,#SIOCGIFADDRstruct.pack('256s', ifname[:15].encode('utf-8'))[20:24]return ip_addressprint(get_local_ip('eth0'))```这种方法通过使用socket模块和fcntl模块,以及网络接口名称来获取本机IP地址。
3. 使用netifaces模块获取本机IP地址:```pythonimport netifacesdef get_local_ips(:ip_addresses = []interfaces = netifaces.interfacesfor interface in interfaces:if_addresses = netifaces.ifaddresses(interface)if netifaces.AF_INET in if_addresses:for if_address in if_addresses[netifaces.AF_INET]:ip_addresses.append(if_address['addr'])return ip_addressesprint(get_local_ips()```这种方法通过使用netifaces模块获取所有网络接口的IP地址。
实验二获取主机IP和主机名一、实验目的1.了解单机的网络编程2.进一步学会使用套接字3.加深对网络编程思想的理解4.学会通过代码查看本机IP和主机名二、实验平台1.Windows系统2. VC++三、实验过程1.回忆MFC的基本使用2.了解本实验基本理论原理3.详细看并且补充代码4.输入代码5.调试代码实现目的6.总结实验四、实验详细主要代码1.获取主机名:2.int CYangjianDlg::GetLocalHostName(CString &sHostName)3.{4. char szHostName[256];5. int nRetCode;6. nRetCode=gethostname(szHostName,sizeof(szHostName));7. if(nRetCode!=0)8. {9. //错误产生10. sHostName=_T("Not available");11. return WSAGetLastError();12. }13. sHostName=szHostName;14. return 0;16.}获取IP地址:int CYangjianDlg::GetIPAddress(const CString &sHostName, CString &sIPAddress){struct hostent FAR *ipHostEnt=gethostbyname(sHostName);if(ipHostEnt==NULL){//错误产生sIPAddress=_T(" ");return WSAGetLastError();}//获取IP地址LPSTR ipAddr=ipHostEnt->h_addr_list[0];if(ipAddr){struct in_addr inAddr;memmove(&inAddr,ipAddr,4);//转化成标准IP地址形式sIPAddress=inet_ntoa(inAddr);if(sIPAddress.IsEmpty())sIPAddress=_T("Not available");}return 0;}调用以上函数获得信息:void CYangjianDlg::OnOK(){int nRetCode;nRetCode=GetLocalHostName(m_sHostName);nRetCode=GetIPAddress(m_sHostName,m_sIPAddress);UpdateData(FALSE);}为了使界面更加友好特增加刷新作用:void CIPDlg::OnButton(){long i=0;m_Edit1.SetSel(0,20);m_Edit1.ReplaceSel("YOU ARE SO CLEVER !"); m_Edit2.SetSel(0,20);m_Edit2.ReplaceSel("中计啦,啦,啦!!!"); while(i<1000000000){i++;}OnOK();}五、实验结果:运行界面1:点击确定获得主机名和IP:尝试刷新:定时间后再次恢复:六、实验要点:1、函数若是自己写就得记得声明。
网络编程技术实验报告实验名称实验一网络编程基础训练队别\ 姓名\ 学号 \ 实验日期实验报告要求: 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地址。
【实验环境】Wireshark【实验作业】1.数据包捕获2.1)feiqiu通过广播查询局域网内的所有主机的MAC地址,采用ARP协议,解析目标地址为10.101.5.122.1)ARP应答报文stat1)–a显示所有侦听端口和连接2)应用程序对网络状态的改变3.使用Windows Sockets的API函数获得本机的IP地址和指定域名的IP地址(1)输入localhost 显示本机IP地址(2)输入显示百度的IP地址【实验中出现问题及解决方法】链接完成的程序get.exe执行结果一闪就结束了,最后通过CMD运行程序得到实验结果。
【思考问题】怎样进行多个IP地址的获取,并进行互联网地址和本地地址的筛选。
【实验体会】无成绩优良中及格不及格教师签名:日期:。
网络编程技术实验报告
实验名称实验一网络编程基础训练
实验报告要求: 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];
}
}。