Delphi获取本机Ip地址的方法

合集下载

delphi 获取MAC地址

delphi 获取MAC地址
If (Res = TIME_ZONE_ID_STANDARD) Then Begin
DT := DT-((TZ.Bias+TZ.StandardBias) / (24*60));
Result := DateTimeToStr(DT)+' '+WideCharToString(TZ.StandardName);
mymaclength:=length(mymac);
r:=sendarp(myip,0,@mymac,@mymaclength);
label1.caption:='errorcode:'+inttostr(r);
label2.caption:=format('%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x',[mymac[0],mymac[1],mymac[2],mymac[3],mymac[4],mymac[5]]);
Var
AI,Work : PIPAdapterInfo;
Size : Integer;
Res : Integer;
I : Integer;
Function MACToStr(ByteArr : PByte; Len : Integer) : String;
Begin
Result := '';
End;
Function GetAddrString(Addr : PIPAddrString) : String;
Begin
Result := '';
While (Addr <> nil) do Begin

C#获取本机IP的6种方法

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);}。

Delphi获取IP

Delphi获取IP

(一)uses IdStackEdit3.Text :=GStack.LocalAddress;(二)uses winsock;//获取IP函数Function GetIPAddr : 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;引用地址:/trackback.asp?id=16558摘自:/article.asp?id=16558(谢)(三)本程序介绍如何获取本地计算机的名称和IP地址。

向窗体上添加两个TLabel组件、两个TEdit组件和一个TButton组件,设计完成的主界面如图1所示。

图1 主界面首先在程序的uses段中添加对WinSock的引用,然后添加一个GetHostName自定义函数,在其中调用GetComputerName函数获取计算机名称,响应代码如下:添加一个NameToIP自定义函数,在其中调用GetHostByName函数根据计算机名称获取计算机的IP地址,响应代码如下:程序代码如下:保存文件,然后按F9键运行程序,程序运行的初始画面如图2所示。

用JS获取客户端IP地址、MAC和主机名的7个方法汇总

用JS获取客户端IP地址、MAC和主机名的7个方法汇总
</BODY>
</HTML>
方法二(所有的平台及浏览器):
获取客户端处在网络中的IP,前提是客户得联网。使用的是新浪接口。
代码如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>JavaScript获取客户端IP[利用新浪接口]</title>
通过上边的js接口调用就可以判断用于属于哪个城市直接显示该城市的相关信息了对于需要城市切换的网站首次判断用户来源非常有帮助
用JS获取客户端IP地址、MAC和主机名的7个方法汇总
用JS获取客户端IP地址、MAC和主机名的7个方法汇总
今天主要介绍JS获取客户端IP地址、MAC和主机名的7个方法, JS本身是不支持获取IP地址等信息的,本文通过其它方法实现,需要的朋友可以参考。
</script>
//打印截取指定的字段值
<script type="text/javascript" src="/getip.aspx "></script>这个是最简单的
像美团等网站打开的时候,都会自动跳转到我们访问者当前所在的城市,这样极大的提高了返回出用户所在的城市名。
</HEAD>
<BODY>
<script language=javascript>
var WshShell =new ActiveXObject("WScript.Shell");

Delphi 中取本机的计算机名、IP地址、MAC地址、Windows登录的用户名

Delphi 中取本机的计算机名、IP地址、MAC地址、Windows登录的用户名

Delphi 中取本机的计算机名、IP地址、MAC地址、Windows登录的用户名--------------------------------------------------------------- uses Windows, WinSock;{ ComputerLocalIP }//取本机的 IP 地址function ComputerLocalIP: string;varch: array[1..32] of char;wsData: TWSAData;myHost: PHostEnt;i: integer;beginResult := '';if WSAstartup(2,wsData)<>0 then Exit; // can’t start winsocktryif GetHostName(@ch[1],32)<>0 then Exit; // getHostName failedexceptExit;end;myHost := GetHostByName(@ch[1]); // GetHostName errorif myHost=nil then exit;for i:=1 to 4 dobeginResult := Result + IntToStr(Ord(myHost.h_addr^[i-1]));if i<4 thenResult := Result + '.';end;end;//获取本机IP的MAC地址Function GetMacAddress: string;varLib: Cardinal;Func: function(GUID: PGUID): Longint; stdcall;GUID1, GUID2: TGUID;beginResult := '';Lib := LoadLibrary('rpcrt4.dll');if Lib <> 0 thenbeginif Win32Platform <>VER_PLATFORM_WIN32_NT then@Func := GetProcAddress(Lib, 'UuidCreate')else @Func := GetProcAddress(Lib, 'UuidCreateSequential'); if Assigned(Func) thenbeginif (Func(@GUID1) = 0) and(Func(@GUID2) = 0) and(GUID1.D4[2] = GUID2.D4[2]) and(GUID1.D4[3] = GUID2.D4[3]) and(GUID1.D4[4] = GUID2.D4[4]) and(GUID1.D4[5] = GUID2.D4[5]) and(GUID1.D4[6] = GUID2.D4[6]) and(GUID1.D4[7] = GUID2.D4[7]) thenbeginResult :=IntToHex(GUID1.D4[2], 2) +'-' +IntToHex(GUID1.D4[3], 2) + '-' +IntToHex(GUID1.D4[4], 2) + '-' +IntToHex(GUID1.D4[5], 2) + '-' +IntToHex(GUID1.D4[6], 2) + '-' +IntToHex(GUID1.D4[7], 2);end;end;FreeLibrary(Lib);end;end;//取本机的计算机名{ ComputerName }function ComputerName: string;varFStr: PChar;FSize: Cardinal;beginFSize := 255;GetMem(FStr, FSize);Windows.GetComputerName(FStr, FSize);Result := FStr;FreeMem(FStr);end;//取Windows登录用户名{ WinUserName }function WinUserName: string; varFStr: PChar;FSize: Cardinal;beginFSize := 255;GetMem(FStr, FSize);GetUserName(FStr, FSize); Result := FStr;FreeMem(FStr);end;。

C语言获取计算机的IP地址

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地址转换为字符串打印出来。

JAVA获取客户端IP的方法

JAVA获取客户端IP的方法

JAVA获取客户端IP的方法在Java中,有多种方法来获取客户端的IP地址。

下面将介绍一些常用的方法。

1. 使用ServletRequest对象获取:ServletRequest对象是Java Servlet规范提供的一个接口,用于获取HTTP请求的相关信息。

通过ServletRequest对象,可以获取到客户端的IP地址。

```javaString ipAddress = request.getRemoteAddr(;```2. 使用ServletRequest对象获取代理服务器IP地址:如果应用程序位于代理服务器之后,上述方法获取到的IP地址可能是代理服务器的IP地址,而非客户端的真实IP地址。

此时,可以通过请求头中的X-Forwarded-For字段获取客户端的真实IP地址。

```javaString ipAddress = request.getHeader("X-Forwarded-For");```3. 使用HttpServletRequest对象获取:HttpServletRequest是ServletRequest的子接口,提供了更多的方法来获取请求的详细信息。

其中,getRemoteAddr(方法用于获取客户端的IP地址。

```javaString ipAddress = request.getRemoteAddr(;```4. 使用 HttpServletReqeust的getHeader方法获取:和上述方法类似,通过获取请求头中的X-Forwarded-For字段,可以获取客户端的真实IP地址。

```javaString ipAddress = request.getHeader("X-Forwarded-For");```5. 使用RequestContextHolder获取:RequestContextHolder是Spring框架提供的一个工具类,用于获取当前请求的上下文信息。

如何查看计算机的IP地址

如何查看计算机的IP地址

如何查看计算机的IP地址在计算机网络中,IP地址(Internet Protocol Address)是为计算机或网络设备在网络通信中进行唯一标识的地址。

IP地址分为IPv4地址和IPv6地址,其中IPv4地址由四个十进制数值组成,每个数值的范围是0到255,用点分十进制(dotted-decimal)表示。

IPv6地址是由8组4位的16进制数字组成,用冒号分隔。

要查看计算机的IP地址,可以通过以下几种方式:1. Windows系统:-使用命令提示符(CMD):- 打开命令提示符(Win + R,然后输入cmd并按下Enter)。

- 在命令提示符下,输入ipconfig并按下Enter键。

-系统会列出所有网络接口的配置信息,包括IP地址、子网掩码、默认网关等。

-查找"IPv4地址"项,即可找到本机的IP地址。

-使用图形界面:- 在任务栏上右击网络图标,选择"打开网络和Internet设置"。

-在打开的窗口中,点击"更改适配器选项"。

-找到所需网络适配器(一般是以太网或Wi-Fi),右击选择"状态"。

-在弹出窗口的"连接状态"下,点击"详细信息"。

-在"IPv4地址"项中,即可找到本机的IP地址。

2. macOS系统:-使用网络设置界面:-点击屏幕右上角的"Wi-Fi"或"以太网"图标。

-在弹出的下拉菜单中,选择"打开网络偏好设置"。

-在打开的窗口中,找到所需网络适配器(一般是Wi-Fi或以太网),点击"高级"。

-在"TCP/IP"选项卡中,即可找到本机的IPv4地址。

-使用终端:-打开终端(应用程序文件夹中的"实用工具"文件夹)。

- 输入ifconfig命令并按下Enter键。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本程序介绍如何获取本地计算机的名称和IP地址。

向窗体上添加两个TLabel组件、两个TEdit组件和一个TButton组件,设计完成的主界面如图1所示。

图1主界面
首先在程序的uses段中添加对WinSock的引用,然后添加一个GetHostName自定义函数,在其中调用GetComputerName函数获取计算机名称,响应代码如下:
function TfrmMain.GetHostName:String;
var
ComputerName:array[0..MAX_COMPUTERNAME_LENGTH+1]of char;
Size:Cardinal;
begin
result:='';
Size:=MAX_COMPUTERNAME_LENGTH+1;
GetComputerName(ComputerName,Size);
Result:=StrPas(ComputerName);
end;
添加一个NameToIP自定义函数,在其中调用GetHostByName函数根据计算机名称获取计算机的IP 地址,响应代码如下:
function ToIP(Name:string):String;
var
WSAData:TWSAData;
HostEnt:PHostEnt;
begin
result:='';
WSAStartup(2,WSAData);
HostEnt:=GetHostByName(PChar(Name));
if HostEnt<>nil then
begin
with HostEnt^do
result:=Format('%d.%d.%d.%d',[Byte(h_addr^[0]),
Byte(h_addr^[1]),Byte(h_addr^[2]),Byte(h_addr^[3])]);
end;
WSACleanup;
end;
程序代码如下:
unit Unit1;
interface
uses
Windows,Messages,Sys Utils,Variants,Classes,Graphics,Controls,Forms,Dialogs, StdCtrls,WinSock;
type
TfrmMain=class(TForm)
btnStart:TButton;
edtIP:TEdit;
edtName:TEdit;
Label1:TLabel;
Label2:TLabel;
function GetHostName:String;
procedure btnStartClick(Sender:TObject);
function NameToIP(Name:string):String;
private
{Private declarations}
public
{Public declarations}
end;
var
frmMain:TfrmMain;
implementation
{$R*.dfm}
function TfrmMain.GetHostName:String;
var
ComputerName:array[0..MAX_COMPUTERNAME_LENGTH+1]of char;
Size:Cardinal;
begin
result:='';
Size:=MAX_COMPUTERNAME_LENGTH+1;
GetComputerName(ComputerName,Size);
Result:=StrPas(ComputerName);
end;
procedure TfrmMain.btnStartClick(Sender:TObject);
begin
edtName.Text:=GetHostName;
edtIP.Text:=NameToIP(edtName.Text);
end;
function ToIP(Name:string):String;
var
WSAData:TWSAData;
HostEnt:PHostEnt;
begin
result:='';
WSAStartup(2,WSAData);
HostEnt:=GetHostByName(PChar(Name));
if HostEnt<>nil then
begin
with HostEnt^do
result:=Format('%d.%d.%d.%d',[Byte(h_addr^[0]),Byte(h_addr^[1]),
Byte(h_addr^[2]),Byte(h_addr^[3])]);
end;
WSACleanup;
end;
end.
保存文件,然后按F9键运行程序,程序运行的初始画面如图2所示。

单击“开始”按钮,就会获取并显示本地计算机的名称和IP地址。

程序运行结果如图3所示。

图2程序运行的初始画面
图3程序运行结果。

相关文档
最新文档