.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