public TCPClientConnection(Socket socket, TCPListener myTCPListener, bool useMessageCollector, string ETX) { try { fUseMessageCollector = useMessageCollector; fIPAddress = socket.RemoteEndPoint.ToString(); fConnection = socket; fIsConnected = true; fReadBufferSize = myTCPListener.ReadBufferSize; fReadBuffer = new byte[fReadBufferSize]; if (myTCPListener.ConnectionTimeOut > 0) //Connection time-out. { fConnection.ReceiveTimeout = myTCPListener.ConnectionTimeOut; fConnection.SendTimeout = myTCPListener.ConnectionTimeOut; } fConnection.ReceiveBufferSize = myTCPListener.ReadBufferSize; fConnection.SendBufferSize = myTCPListener.ReadBufferSize; fMyListener = myTCPListener; fMyExtasysServer = myTCPListener.MyExtasysTCPServer; } catch (SocketException ex) { DisconnectMe(); return; } catch (Exception ex) { DisconnectMe(); return; } if (fUseMessageCollector) { fMyMessageCollector = new TCPClientConnectionMessageCollector(this, ETX); } fMyListener.AddClient(this); StartReceivingData(); fConnectionStartUpDateTime = DateTime.Now; }
public void DisconnectMe() { if (fActive) { fActive = false; fIsConnected = false; try { fConnection.Close(); } catch (Exception ex) { } if (fUseMessageCollector && fMyMessageCollector != null) { fMyMessageCollector.Dispose(); } if (fLastIncomingPacket != null) { fLastIncomingPacket.Cancel(); } if (fLastOugoingPacket != null) { fLastOugoingPacket.Cancel(); } if (fLastMessageCollectorPacket != null) { fLastMessageCollectorPacket.Cancel(); } fConnection = null; fLastIncomingPacket = null; fLastOugoingPacket = null; fLastMessageCollectorPacket = null; fMyMessageCollector = null; fMyListener.RemoveClient(fIPAddress); fMyListener.MyExtasysTCPServer.OnClientDisconnect(this); } }