获取Delphi中所有连接的IP地址
以下代码返回计算机的第一个TCP/IP连接的IP地址获取Delphi中所有连接的IP地址,delphi,winsock,Delphi,Winsock,以下代码返回计算机的第一个TCP/IP连接的IP地址 uses WinSock; // ... function GetLocalIP() : String; var addr: TSockAddrIn; phe: PHostEnt; szHostName: array[0..128] of Char; socketData: TWSADATA; begin Result := '127.0.0.1'; // Initialize the so
uses WinSock;
// ...
function GetLocalIP() : String;
var
addr: TSockAddrIn;
phe: PHostEnt;
szHostName: array[0..128] of Char;
socketData: TWSADATA;
begin
Result := '127.0.0.1';
// Initialize the socket API
if (WSAStartup($101, socketData) = 0) then
begin
// Get local machine name
if (GetHostName(szHostName, 128) = SOCKET_ERROR) then
Exit;
// Use name to find IP address
phe := GetHostByName(szHostName);
if (phe = nil) then
Exit;
addr.sin_addr.S_addr := Longint(PLongint(phe^.h_addr_list^)^);
// Convert IP address to PChar format
Result := inet_ntoa(addr.sin_addr);
end;
end;
// ...
Label1.Caption := GetLocalIP();
要获得所有TCP/IP网络连接的IP地址(其中有多个连接),我需要做哪些修改
我确实偶然发现了这篇相关的文章:
使用Windows API“GetAdapterInfo”时,似乎使用了不同的技术……这就是方法吗?如果要枚举本地计算机的当前可用IP地址,请使用或
如果要枚举本地计算机当前的活动TCP/IP套接字连接,请将或用于IPv4连接,或用于IPv6连接。显示的代码未获取任何TCP连接的IP。它只是使用本地计算机的主机名执行反向DNS查找。您的代码缺少对@EProgrammerNotFound的调用:啊,是的,发现得很好。我继承了这个项目并找到了给定的代码。正如雷米指出的,这不是解决问题的方法……只是试图改进它。谢谢。对于希望在Delphi7中实现此功能的任何人,您都需要找到IP_适配器_信息和其他必需结构的定义。这个网站是一个很大的帮助:需要手动定义IP_适配器_信息和Delphi 7所需的其他结构…但最终使其工作。再次感谢。