private void ListenThread() { try { RemoteSocket.ReceiveTimeout = 1000; byte[] buffer = new byte[1024 * 1024]; while (this.IsExpired == false) { SocketHelpers.Read(this, RemoteSocket, buffer, 4); if (this.IsExpired) { break; } var messageLength = BitConverter.ToInt32(buffer, 0); SocketHelpers.Read(this, RemoteSocket, buffer, messageLength); if (this.IsExpired) { break; } var messageText = Encoding.UTF8.GetString(buffer, 0, messageLength); MessageReceived.Fire(messageText); } } catch (Exception ex) { UnexpectedDisconnect.Fire(ex); this.Dispose(); } finally { RemoteSocket.Close(); } }
protected virtual void End() { RemoteStream.Close(); RemoteSocket.Shutdown(SocketShutdown.Both); RemoteSocket.Close(); ClientStream.Close(); ClientSocket.Shutdown(SocketShutdown.Both); ClientSocket.Close(); }