2014-10-09 155 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