获取Delphi中所有连接的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

以下代码返回计算机的第一个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 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所需的其他结构…但最终使其工作。再次感谢。