簡體   English   中英

C#-連接到(RAS)VPN時如何獲取IP地址

[英]C# - How to get IP Address when connected to (RAS) VPN

下午好,

當本地計算機通過VPN(RAS)連接到遠程Windows域網絡時,誰能提供有關如何獲取本地計算機IP地址的任何示例? 即我需要VPN地址,而不是遠程用戶的本地網絡地址。

例如,我的服務器端Windows服務與客戶端應用程序進行通信,並且需要創建所有已連接用戶及其IP地址的日志。

當在局域網上使用計算機時,此解決方案非常簡單,但是我想知道如何才能獲得通過VPN連接到服務器的用戶的IP地址。 請注意,IP地址獲取方法將在客戶端執行並發送到服務器。

這是我當前的代碼,僅在本地連接到域網絡時才有效:

public static string GetLocalIPv4()
{
    string ipv4Address = String.Empty;

    foreach (IPAddress currrentIPAddress in Dns.GetHostAddresses(Dns.GetHostName()))
    {
        if (currrentIPAddress.AddressFamily.ToString() == System.Net.Sockets.AddressFamily.InterNetwork.ToString())
        {
            ipv4Address = currrentIPAddress.ToString();
            break;
        }
    }

    return ipv4Address;
}

我們的內部網絡由Windows SBS控制,並使用諸如mycompany.local之類的域。

非常感謝您的寶貴時間,我期待着您的回復。

正如@MarcB的評論所指出的那樣,無法想出為什么您想要該信息的充分理由...因此,如果您出於好奇就可以在應用程序中解釋其用法,那將很有趣。

但是,有關使用Dns.GetHostAddresses枚舉計算機的IP地址,在此處和在線存在很多錯誤答案。 似乎大多數人都沒有意識到在配置的DNS解析器中查找計算機名稱與枚舉計算機地址之間的區別。 這些是完全不同的事情,盡管在許多情況下似乎可以返回正確的結果,但這絕對是錯誤的處理方法,因為它們不是同一件事。 例如,在此處看到此文章的鏈接,其中原始張貼者將錯誤的答案標記為答案,但正確的答案位於@StephanCleary的下面。 請參閱: 獲取IPv4地址

所不同的是,您要查看計算機配置並枚舉要從計算機自己的TCPIP堆棧中查找的任何IP地址。 上面的代碼和許多不正確的響應嘗試在DNS解析器中查找名稱。 一旦正確設置了該部分,就應該能夠基於網絡適配器(按名稱或其他屬性)確定VPN連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM