|
Azulean 様ご回答ありがとうございます。
ご指摘の通り、理解不足かつ安易に他人に答えを得ようとする自分がありました。
申し訳ありませんでした。
まだまだ、理解不足ではありますが、色々テストして、vb6の「mswinsck」ではスムーズに動きますが、
.netではスムーズに動かないです。
例えば:あきらかにネットワークが切断した場合では、両方ともスムーズに動きますが、
ネットワークが接続された状態(内部と外部)で接続した状態では、vb6[mswinsck]の方がスムーズに
戻り値が得られますが、<.net>下記のコードでは、戻り値が得られまで時間が掛かる。
もし、なにか解消方法ございましたら、ご教示のほどよろしくお願い致します。
<vb.net2010+.net2.0>
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
|