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))
。你能发布实际无法验证这一点的代码吗?