【问题标题】:Why am I getting an ArgumentNullException notification and how do I solve it?为什么我会收到 ArgumentNullException 通知,我该如何解决?
【发布时间】:2017-06-14 03:49:10
【问题描述】:

我正在尝试为学校完成一个项目,该项目涉及我提示用户输入 IP 地址,然后显示与其关联的主机名。我是 C# 新手。

这是我目前拥有的代码:

        Console.WriteLine("Enter an IP address:"); //prompt user to input IP address
        string host = Console.ReadLine();
        IPHostEntry hostEntry;


        hostEntry = NewMethod(host);

        if (hostEntry.AddressList.Length > 0)
        {
            var ip = hostEntry.AddressList[0];
            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
            s.Connect(ip, 80);
        }
    }

    private static IPHostEntry NewMethod(string host)
    {
        return Dns.GetHostEntry(host); // NEED FIX
    }
}

具有“需要修复”的部分是出现错误的地方。提前致谢!

编辑:如何以这种格式显示结果:“xxxx 的主机名是:hhhhhh”,其中“xxxx”是用户输入的 IP 地址,“hhhhh”是 IP 的主机名?

编辑(针对 StackOverflow):我的问题针对此实例更具体,不是关于 NullException 问题的一般问题。

【问题讨论】:

  • 嗯,你是在提示用户输入,然后你什么都不要求。 hostnull当你打电话给NewMethod
  • @InBetween,我指定了为什么它不是重复的并且还对其进行了更改,以便它读取用户输入。谢谢!
  • 帖子中提供的代码不太可能产生标题中声称的异常。请仔细阅读minimal reproducible example 指导,并避免在问题与用户输入不直接相关时要求用户输入的代码。还要确保阅读示例代码中使用的每种方法的 MSDN(或取决于您未来问题的语言,其他文档来源),以确保您至少大致了解这些方法在做什么以及它们接受/返回什么值。跨度>

标签: c# sockets ip


【解决方案1】:

host 从未设置,因此您将null 传递给Dns.GetHostEntry,这会产生异常。

在您的程序开始时,您似乎需要从用户那里读取 IP 地址:

Console.WriteLine("Enter an IP address:"); //prompt user to input IP address
string host = Console.ReadLine();

【讨论】:

    猜你喜欢
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多