2010-09-08 39 views
4

我使用VB.net來ping一個域/ IP,使用下面的代碼;添加端口到Ping

My.Computer.Network.Ping(Address, 1000) 

我現在想要一個端口添加到域/ IP - e.g google.co.uk:21

我會如何呢?

回答

6

您無法ping通端口,但可以嘗試使用TCP/IP或UDP連接到特定端口。端口概念屬於協議棧的傳輸層(TCP或UDP),而ping位於較低的網絡層(ICMP協議)。

+0

啊感謝您的幫助,我更喜​​歡代碼和圖形用戶界面設計,並沒有TCP感/ IP等,謝謝你堆棧溢出! – 2010-09-08 11:56:30

2

你不這樣做,因爲這不是ping的工作原理。在ICMP協議中沒有端口的概念。

如果要查看服務器上是否打開端口,則必須嘗試使用​​TCP或UDP(取決於該服務器預期的協議)連接到該端口。沒有其他方式來檢查一個開放的端口。

2

您可以測試端口被「打開」通過使用此功能:

Function CheckPortOpen(ByVal hostname As String, ByVal portnum As Integer) As Boolean 

    Dim ipa As IPAddress = CType(Dns.GetHostAddresses(hostname)(0), IPAddress) 

    Try 
     Dim sock As Socket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) 
     Console.WriteLine("Testing " & hostname & ":" & portnum) 
     sock.Connect(ipa, portnum) 
     If (sock.Connected = True) Then 
      sock.Close() 
      sock = Nothing 
      Return True 
     End If 

    Catch sx As SocketException 
     If sx.ErrorCode = 10061 Then 
      Return False 
     Else 
      Return Nothing 
     End If 

    End Try 

End Function