2014-10-09 91 views
2

創建Windows應用程序以檢查與少數服務器的連接。如何檢查天氣是否存在與遠程ip上指定端口的連接?如何檢查遠程端口是否打開

是否有任何Windows內置命令來檢查遠程端口(命令行)?

檢查前不知道天氣端口是TCP還是UDP端口。怎麼可能。

在此先感謝

+0

退房:http://serverfault.com/questions/309357/ping-a-specific-port – DonBoitnott 2014-10-09 11:46:25

回答

0

從我的(德國)博客:enter link description here

更新:該工具支持UDP端口和多端口平現在太。

如果端口打開,它將返回true。這是老式的代碼(沒有TPL),但它的工作原理。

var result = false; 
using (var client = new TcpClient()) 
{ 
    try 
    { 
     client.ReceiveTimeout = timeout * 1000; 
     client.SendTimeout = timeout * 1000; 
     var asyncResult = client.BeginConnect(host, port, null, null); 
     var waitHandle = asyncResult.AsyncWaitHandle; 
     try 
     { 
      if (!asyncResult.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(timeout), false)) 
      { 
       // wait handle didn't came back in time 
       client.Close(); 
      } 
      else 
      { 
       // The result was positiv 
       result = client.Connected; 
      } 
      // ensure the ending-call 
      client.EndConnect(asyncResult); 
     } 
     finally 
     { 
      // Ensure to close the wait handle. 
      waitHandle.Close(); 
     } 
    } 
    catch 
    { 
    } 
} 
return result; 
+0

將如何在UDP的情況下工作? – Ajay 2014-10-09 12:05:00

+0

該端口可能是tcp或Udp端口。它適用於TCP端口。連接到谷歌(74.125.224.72)在端口80,並正常工作。但是如何爲Udp預留一個端口(例如:60500)? – Ajay 2014-10-09 12:25:35

+0

爲什麼不只是使用Socket,似乎沒有必要使用TcpClient(具有其所有功能)來實現如此簡單的功能..? – Patrick 2014-10-09 12:29:20