Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private TcpClient GetClient() {
- var client = new TcpClient();
- client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
- client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendBuffer, SEND_BUFFER_SIZE);
- client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer, RECEIVE_BUFFER_SIZE);
- client.LingerState = new LingerOption(false, 0);
- client.NoDelay = true;
- client.Connect(new IPEndPoint(IPAddress.Parse(Host), Port));
- return client;
- }
- private void ReadMessagesEx(TcpClient client) {
- var socket = client.Client;
- var ready = true;
- var lengthBuffer = new byte[LENGTH_BUFFER_SIZE];
- var buffer = default(byte[]);
- var length = 0;
- var index = 0;
- while (_running) {
- if (client.Available == 0) continue;
- if (ready) {
- index = 0;
- var read = socket.Receive(lengthBuffer, 0, LENGTH_BUFFER_SIZE, SocketFlags.None);
- if (read > 0) {
- if (BitConverter.IsLittleEndian) Array.Reverse(lengthBuffer);
- length = BitConverter.ToInt32(lengthBuffer, 0);
- buffer = new byte[length];
- ready = false;
- }
- } else
- index += socket.Receive(buffer, index, length - index, SocketFlags.None);
- ready = index == length;
- if (ready) _dataQueue.Enqueue(buffer);
- }
- }
Add Comment
Please, Sign In to add comment