회사의 서버와 통신하기 위해 비동기 UDP 클라이언트를 작성했습니다. 내 개발자 컴퓨터에서 실행하면 모두 잘됩니다. 다른 컴퓨터에 배포 할 때 소켓을 통해 데이터를 처음 보낼 때 EndReceive에서 소켓 예외가 발생합니다. 내 개발자 박스는 Win7이고 XP SP3 머신과 Server 2003 R2 머신 모두에 배포했습니다. 다음은 수신 코드는 다음과 같습니다VB.NET 3.5 배포시 SocketException이 있지만 개발 컴퓨터에 없습니다.
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: 때문에 I/O 작업이 스레드 종료 또는 응용 프로그램 요청이 취소되었습니다 RTSPc.Connection.ReceiveCallback에서 System.Net.Sockets.Socket.EndReceive (IAsyncResult를 asyncResult) 의 SocketException이 OperationAborted됩니다
(IAsyncResult를 아칸소)에서
마치 망치로 얼굴을 때리는 모습을 보는 것 ... – Will
감사합니다. 매우 도움이됩니다. – jercra