예제 #1
0
 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();
     }
 }
예제 #2
0
        protected virtual void End()
        {
            RemoteStream.Close();

            RemoteSocket.Shutdown(SocketShutdown.Both);
            RemoteSocket.Close();

            ClientStream.Close();

            ClientSocket.Shutdown(SocketShutdown.Both);
            ClientSocket.Close();
        }