VB.NET 2003とWindowsXPでソケットの通信プログラムを作成しています。
ソースは下記のような感じです。
Private Sub SendData(ByVal rcv_buffer As String)
' IPアドレスとポート番号を取得
Dim ipAddress As System.Net.IPAddress =
System.Net.IPAddress.Parse(strIp)
Dim RemoteEndPoint As New System.Net.IPEndPoint(ipAddress, 10000)
Try
' ソケットを作成
Dim TcpClient As System.Net.Sockets.Socket
TcpClient = New System.Net.Sockets.Socket (System.Net.Sockets.AddressFamily.InterNetwork,System.Net.Sockets.SocketType.Stream,System.Net.Sockets.ProtocolType.Tcp)
'接続を開始
TcpClient.BeginConnect(RemoteEndPoint, AddressOf OnConnected,TcpClient)
Catch Ex As Exception
'エラーメッセージをログに書込み
EventLog.WriteEntry("Servis", "SendData:" & Ex.ToString, EventLogEntryType.Error)
End Try
End Sub
Private Sub OnConnected(ByVal ar As IAsyncResult)
Dim TcpClient1 As System.Net.Sockets.Socket = CType(ar.AsyncState, System.Net.Sockets.Socket)
Try
'クライアントソケットの取得
TcpClient1.EndConnect(ar)
'データを送信
Dim bytSendData As Byte()
bytSendData = System.Text.Encoding.Default.GetBytes(resValue)
TcpClient1.Send(bytSendData)
Catch Ex As Exception
'エラーメッセージをログに書込み
EventLog.WriteEntry("Servis", "OnConnected:" & Ex.ToString, EventLogEntryType.Error)
End Try
'切断
TcpClient1.Close()
TcpClient1 = Nothing
End Sub
この時に「TcpClient = New System.Net.Sockets.Socket (System.Net.Sockets.AddressFamily.InterNetwork,System.Net.Sockets.SocketType.Stream,System.Net.Sockets.ProtocolType.Tcp)」
の個所で必ず、ハンドルが1つ増加します。そのハンドルが毎回
1つずつ増えていくので気持ち悪くてなんとか開放したいのですが、
方法がわからず困っております。ハンドルがこのようにどんどん増加
していくと何かシステム上不具合が発生するものなのでしょうか?
ツイート | ![]() |