.Net的TcpClient允许我测试是否可以建立连接,因此,让我知道远程端口是否打开。.NET TcpClient连接不会抛出异常
检查这个代码:
TcpClient tcpCLient = new TcpClient();
try
{
tcpCLient.Connect("www.google.com", 80);
Console.WriteLine("Yes");
Console.ReadLine();
}
catch (Exception)
{
Console.WriteLine("No");
Console.ReadLine();
throw;
}
我测试www.google.com的TCP端口80和,因为它是打开我的控制台“是”的消息见。 现在,我将尝试关闭www.google.com的TCP端口70。
TcpClient tcpCLient = new TcpClient();
try
{
tcpCLient.Connect("www.google.com", 70);
Console.WriteLine("Yes");
Console.ReadLine();
}
catch (Exception)
{
Console.WriteLine("No");
Console.ReadLine();
throw;
}
我期望的异常,所以我建议立即进行删除在控制台中看到一个“否”。为什么没有发生? 谢谢!
更新: 控制台即使在几分钟后仍保持这种方式。
你可以扩展'没有任何反应'。你有没有收到任何消息。您等了多久,可能会有超时和重试问题 – pm100
@ Pm100完成。谢谢。 –
我看到同样的东西 - 你得等几分钟。原因几乎肯定是由于谷歌防火墙,他们丢包意外的端口 - 这看起来像一个传输错误,所以你会得到重试。尝试对非防火墙机器(例如本地主机)进行相同的测试,它会立即失败,因为主机拒绝关闭端口 – pm100