Guest User

Untitled

a guest
May 21st, 2018
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.68 KB | None | 0 0
  1. private TcpClient GetClient() {
  2.             var client = new TcpClient();
  3.             client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
  4.             client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendBuffer, SEND_BUFFER_SIZE);
  5.             client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer, RECEIVE_BUFFER_SIZE);
  6.             client.LingerState = new LingerOption(false, 0);
  7.             client.NoDelay = true;
  8.             client.Connect(new IPEndPoint(IPAddress.Parse(Host), Port));
  9.             return client;
  10.         }
  11.  
  12. private void ReadMessagesEx(TcpClient client) {
  13.             var socket = client.Client;
  14.             var ready = true;
  15.             var lengthBuffer = new byte[LENGTH_BUFFER_SIZE];
  16.             var buffer = default(byte[]);
  17.             var length = 0;
  18.             var index = 0;
  19.             while (_running) {
  20.                 if (client.Available == 0) continue;
  21.                 if (ready) {
  22.                     index = 0;
  23.                     var read = socket.Receive(lengthBuffer, 0, LENGTH_BUFFER_SIZE, SocketFlags.None);
  24.                     if (read > 0) {
  25.                         if (BitConverter.IsLittleEndian) Array.Reverse(lengthBuffer);
  26.                         length = BitConverter.ToInt32(lengthBuffer, 0);
  27.                         buffer = new byte[length];
  28.                         ready = false;
  29.                     }
  30.                 } else
  31.                     index += socket.Receive(buffer, index, length - index, SocketFlags.None);
  32.                 ready = index == length;
  33.                 if (ready) _dataQueue.Enqueue(buffer);
  34.             }
  35.         }
Add Comment
Please, Sign In to add comment