override protected void dataReceivedCallback(IAsyncResult asyn) { SocketPacket socketData = (SocketPacket)asyn.AsyncState; int res = socketData.m_currentSocket.EndReceive(asyn); if (res <= 0) { Stop(); } else { try { lock (this) { if (m_mainSocket != null) { if (DataReceived != null) { DataReceived(this, new DataEventArgs(socketData.dataBuffer, res)); } } } } catch (SocketException sex) { FireExceptionOccured(sex); } catch (Exception ex) { //LOG: General Exception FireExceptionOccured(ex); } } }
override protected void dataReceivedCallback(IAsyncResult asyn) { SocketPacket socketData = (SocketPacket)asyn.AsyncState; int res = 0; try { res = socketData.m_currentSocket.EndReceive(asyn); } catch (Exception e) { FireExceptionOccured(e); } if (res <= 0) { Stop(); } else { try { lock (this) { if (DataReceived != null) { DataReceived(this, new DataEventArgs(socketData.dataBuffer, res)); } } } catch (ObjectDisposedException ode) { //Console.WriteLine(ode.ObjectName); //Console.WriteLine(ode.Message); FireExceptionOccured(ode); } catch (SocketException sex) { //LOG: Socket Exception //Console.WriteLine(sex.Message); //Console.WriteLine(sex.StackTrace); if (!m_mainSocket.Connected) { FireChannelDisconnected(); } else { FireExceptionOccured(sex); } } catch (Exception e) { //LOG: General Exception FireExceptionOccured(e); } } }
override protected void dataReceivedCallback(IAsyncResult asyn) { SocketPacket socketData = (SocketPacket)asyn.AsyncState; int res = socketData.m_currentSocket.EndReceive(asyn); if (res <= 0) { DisconnectClient(socketData.m_currentSocket.GetHashCode()); } else { try { lock (this) { if (DataReceived != null) { DataReceived(this, new ServerDataEventArgs(socketData.dataBuffer, res, socketData.m_currentSocket.GetHashCode())); } } } catch (ObjectDisposedException ode) { //Console.WriteLine(ode.ObjectName); //Console.WriteLine(ode.Message); FireExceptionOccured(ode); } catch (SocketException sex) { if (sex.ErrorCode == 10054) // Error code for Connection reset by peer { m_workerSocketList.Remove(socketData.m_currentSocket); if (ChannelClientDisconnected != null) { ChannelClientDisconnected( this, new ServerConnectionEventArgs(socketData.m_currentSocket.GetHashCode()) ); } } else { //LOG: Socket Exception //Console.WriteLine(sex.Message); //Console.WriteLine(sex.StackTrace); FireExceptionOccured(sex); } } catch (Exception e) { //LOG: General Exception FireExceptionOccured(e); } } }
protected void WaitForData(int bufferSize, Socket socket) { if (m_pfnCallBack == null) { m_pfnCallBack = new AsyncCallback(dataReceivedCallback); } SocketPacket theSocPkt = new SocketPacket(socket, bufferSize); socket.BeginReceive(theSocPkt.dataBuffer, 0, theSocPkt.dataBuffer.Length, SocketFlags.None, m_pfnCallBack, theSocPkt); }