会社のサーバーと通信するための非同期UDPクライアントを作成しました。開発者のマシンで実行すると、すべてうまくいきます。別のマシンにデプロイすると、ソケットを介して初めてデータを送信したときに、EndReceiveでソケット例外が発生します。私の開発ボックスはWin7で、XPSP3マシンとServer2003R2マシンの両方に展開しました。以下は受信コードです:
Private Sub ReceiveCallback(ByVal ar As IAsyncResult)
Try
' Retrieve the state object and the client socket
from the asynchronous state object.'
Dim state As StateObj = CType(ar.AsyncState, StateObj)
Dim client As Socket = state.sockArg
' Read data from the remote device.'
Dim bytesRead As Integer
receiveDone.WaitOne(Timeout.Infinite)
bytesRead = client.EndReceive(ar)
If bytesRead > 0 Then
Dim s As String = Encoding.ASCII.GetString(state.buffer, 0, bytesRead)
parsedata(s)
End If
Catch SockEx As SocketException
mlog.Error(String.Format("ID={1} {0} SocketError={2}", SockEx.Message, ID.ToString, SockEx.SocketErrorCode.ToString), SockEx)
Catch ox As System.ObjectDisposedException
mlog.Warn(String.Format("Object Disposed ID={0}", ID.ToString))
Catch ex As Exception
mlog.Error(String.Format("{1} ID={0}", ID.ToString, ex.Message), ex)
End Try
End Sub 'ReceiveCallback
私が得る例外は次のとおりです。
System.Net.Sockets.SocketException:RTSPc.Connection.ReceiveCallback(IAsyncResult ar)のSystem.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult)でのスレッド終了またはアプリケーション要求により、I/O操作が中止されました。
SocketExceptionはOperationAbortedです