C# “错误”;指定的IP地址无效";当在下面键入一个数字时;100“;第二和第三部分

C# “错误”;指定的IP地址无效";当在下面键入一个数字时;100“;第二和第三部分,c#,C#,我有以下代码: private void TestConnect() { while (t.IsAlive) { System.Net.Sockets.TcpClient client = new TcpClient(); try { client.Connect(IPAddress.Parse("187.84.191.50"), 80));

我有以下代码:

    private void TestConnect()
    {
        while (t.IsAlive)
        {
            System.Net.Sockets.TcpClient client = new TcpClient();
            try
            {
                client.Connect(IPAddress.Parse("187.84.191.50"), 80));
                this.Invoke(new SetLabel(SetLabelStatus), "Open connection, active host.");
            }
            catch (SocketException ex) { this.Invoke(new SetLabel(SetLabelStatus), "Unable to connect, error: \n" + ex.Message + "\nTrying again..."); }
            finally { client.Close(); }
        }
    }
                string ip = (Convert.ToInt16(txtIP.Text.Replace(",", ".").Split('.')[0])).ToString();
                ip += "." + (Convert.ToInt16(txtIP.Text.Replace(",", ".").Split('.')[1])).ToString();
                ip += "." + (Convert.ToInt16(txtIP.Text.Replace(",", ".").Split('.')[2])).ToString();
                ip += "." + (Convert.ToInt16(txtIP.Text.Replace(",", ".").Split('.')[3])).ToString();
                client.Connect(IPAddress.Parse(ip), port);
当我输入像173.194.118.71这样的地址时,它工作正常,但如果我输入像这样的地址:187.84.191.50 “指定的IP地址无效”错误返回到代码


那么,如何使用IPAddress.Parse()方法正确地强制转换IP地址呢?

上面的代码工作正常,当我在第二部分中键入一个无法正确强制转换的以数字之前的“0”开头的地址时,问题就出现了。因此,我用以下代码处理它:

    private void TestConnect()
    {
        while (t.IsAlive)
        {
            System.Net.Sockets.TcpClient client = new TcpClient();
            try
            {
                client.Connect(IPAddress.Parse("187.84.191.50"), 80));
                this.Invoke(new SetLabel(SetLabelStatus), "Open connection, active host.");
            }
            catch (SocketException ex) { this.Invoke(new SetLabel(SetLabelStatus), "Unable to connect, error: \n" + ex.Message + "\nTrying again..."); }
            finally { client.Close(); }
        }
    }
                string ip = (Convert.ToInt16(txtIP.Text.Replace(",", ".").Split('.')[0])).ToString();
                ip += "." + (Convert.ToInt16(txtIP.Text.Replace(",", ".").Split('.')[1])).ToString();
                ip += "." + (Convert.ToInt16(txtIP.Text.Replace(",", ".").Split('.')[2])).ToString();
                ip += "." + (Convert.ToInt16(txtIP.Text.Replace(",", ".").Split('.')[3])).ToString();
                client.Connect(IPAddress.Parse(ip), port);

你需要IPAddress.Parse吗?正常情况下.Connect(“IP地址”)工作正常。
client.Connect(IPAddress.Parse(“187.84.191.50”),80)
应该是
client.Connect(IPAddress.Parse(“187.84.191.50”),80)否则可以正常工作。在修复语法问题后,您的代码对我来说运行良好。
IPAddress.Parse(“187.84.191.50”)
不会为我引发异常。
client.Connect(IPAddress.Parse(“187.84.191.50”),80))
。你能发布实际无法验证这一点的代码吗?