private void TryRead(IAsyncResult ar) { try { ReadCompleted?.Invoke(this, new TcpCompletedEventArgs(Socket.EndReceive(ar))); } catch (Exception ex) { var eventArgs = new TcpCompletedEventArgs(ex); eventArgs.Error = true; ReadCompleted?.Invoke(this, eventArgs); } }
private void TryConnect(IAsyncResult ar) { try { Socket.EndConnect(ar); ConnectCompleted?.Invoke(this, new TcpCompletedEventArgs(ar.AsyncState)); } catch (Exception ex) { var eventArgs = new TcpCompletedEventArgs(ex); eventArgs.Error = true; ConnectCompleted?.Invoke(this, eventArgs); } }
private void TryShutdown(IAsyncResult ar) { try { Socket.EndDisconnect(ar); ShutdownCompleted?.Invoke(this, new TcpCompletedEventArgs()); } catch (Exception ex) { var eventArgs = new TcpCompletedEventArgs(ex); eventArgs.Error = true; ShutdownCompleted?.Invoke(this, eventArgs); } }
private void Socket_ShutdownCompleted(object sender, TcpCompletedEventArgs e) { ShutdownCompleted?.Invoke(sender, e); }
private void Socket_ReadCompleted(object sender, TcpCompletedEventArgs e) { ReadCompleted?.Invoke(sender, e); }
private void Socket__ConnectCompleted(object sender, TcpCompletedEventArgs e) { ConnectCompleted?.Invoke(sender, e); }
private void Socket_ReadCompleted(object sender, TcpCompletedEventArgs e) { if (!e.Error) { bytesReceived += (int)e.Data; if ((int)e.Data == 0) { PacketArrived?.Invoke(Socket, new TcpCompletedEventArgs()); return; } if (dataBuffer == null) { if (bytesReceived != sizeof(int)) { ReadLoop(); } else { int len = BitConverter.ToInt32(lenghtBuffer, 0); if (len < 0) { PacketArrived?.Invoke(Socket, new TcpCompletedEventArgs { Data = new System.IO.InvalidDataException( "Packet length less than zero (corrupted message)"), Error = true }); return; } // Keepalive packet if (len == 0) { bytesReceived = 0; ReadLoop(); } else { dataBuffer = new byte[len]; bytesReceived = 0; ReadLoop(); } } } else { if (bytesReceived != dataBuffer.Length) { // Keep reading data ReadLoop(); } else { PacketArrived?.Invoke(Socket, new TcpCompletedEventArgs(dataBuffer)); dataBuffer = null; bytesReceived = 0; ReadLoop(); } } } else { PacketArrived?.Invoke(Socket, e); } }