如何在C#中从FTP请求中获取IP地址

4

我收到了一个FTP请求。我想要获取这个请求中提到的FTP服务器的IP地址。我需要将其与白名单中的FTP服务器列表进行验证。

任何帮助都将不胜感激..

我的代码如下:

try
{
    IPHostEntry host;
    string localIP = "?";
    host = Dns.GetHostEntry(uri);
    foreach (IPAddress ip in host.AddressList)
    {
        // we are only interested in IPV4 Addresses
        if (ip.AddressFamily == AddressFamily.InterNetwork) 
        {
            localIP = ip.ToString();
        }
    }

    return localIP;
}
catch (Exception exception)
{
    throw;
}

大部分我使用的代码都来自stackoverflow。以下是我所遵循的链接:https://dev59.com/hXNA5IYBdhLWcg3wKacx http://blogs.x2line.com/al/archive/2008/08/29/3544.aspx - Gagan
请问您能否澄清/编辑一下,这样我就可以确切地知道您需要什么了吗? - m.edmondson
你是在服务FTP请求还是发起一个?你发布的代码与此毫不相关。 - YetAnotherUser
我正在进行一个FTP请求。我现在的代码是尝试根据FTP URL获取IP地址的方法。FtpWebRequest ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftppath)); - Gagan
那么这段代码应该可以运行 - 你正在过滤地址,仅保留 IPv4 地址,这可能会过滤掉你的实际服务器。 - YetAnotherUser
显示剩余2条评论
1个回答

5

好的,这里是我的技巧...

private string GetFTPAddress(string uri)
{
    try
    {
       // IPHostEntry host;
        string localIP = null;
        var entries = uri.Split('/');
        var host = Dns.GetHostAddresses(entries[2]);
        foreach (IPAddress ip in host)
        {
            // we are only interested in IPV4 Addresses
            if (ip.AddressFamily == AddressFamily.InterNetwork)
            {
                localIP = ip.ToString();
            }
        }

        return localIP;
    }
    catch (Exception exception)
    {
        throw;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接