Example #1
0
        /// <summary>
        /// Reads data from the server. Receives the header packet first to know how many bytes to read.
        /// </summary>
        /// <returns>the data received from the server</returns>
        private byte[] ReadMessage()
        {
            //we need a byte buffer to store the header
            var headerBuffer = new byte[PacketHeader.Size];

            //then we read into that buffer
            _socket.Receive(headerBuffer, PacketHeader.Size, SocketFlags.None);
            //and decode it into a header to know how many bytes we will receive next
            var header = PacketHeader.Decode(headerBuffer);

            if (header.DataLength <= 0)
            {
                throw new Exception("Length of header was zero");
            }

            //we then make a buffer that will receive the data
            var dataBuffer = new byte[header.DataLength];

            var size  = (int)header.DataLength;
            var total = 0;

            //we might need to receive multiple packets to get all the data
            while (total < size)
            {
                var recv = _socket.Receive(dataBuffer, total, size - total, SocketFlags.None);
                if (recv == 0)
                {
                    break;
                    //maybe should handle this differently?
                }
                total += recv;
            }

            return(dataBuffer);
        }
Example #2
0
        /// <summary>
        /// Reads data from the server. Receives the header packet first to know how many bytes to read.
        /// </summary>
        /// <returns>the data received from the server</returns>
        private byte[] ReadMessage()
        {
            //we need a byte buffer to store the header
            var headerBuffer = new byte[PacketHeader.Size];

            //then we read into that buffer
            _socket.Receive(headerBuffer, PacketHeader.Size, SocketFlags.None);
            //and decode it into a header to know how many bytes we will receive next
            var header = PacketHeader.Decode(headerBuffer);

            if (header.DataLength <= 0)
            {
                throw new Exception("Length of header was zero");
            }

            //we then make a buffer that will receive the data
            var dataBuffer = new byte[header.DataLength];

            if (_socket.Receive(dataBuffer, (int)header.DataLength, SocketFlags.None) != header.DataLength)
            {
                throw new Exception("Received wrong amount of bytes in " + nameof(ReadMessage));
            }

            return(dataBuffer);
        }
Example #3
0
        /// <summary>
        /// Reads data from the server. Receives the header packet first to know how many bytes to read.
        /// </summary>
        /// <returns>the data received from the server</returns>
        private byte[] ReadMessage()
        {
            //we need a byte buffer to store the header
            var headerBuffer = new byte[PacketHeader.Size];

            //then we read into that buffer
            _socket.Receive(headerBuffer, PacketHeader.Size, SocketFlags.None);
            //and decode it into a header to know how many bytes we will receive next
            var header = PacketHeader.Decode(headerBuffer);

            if (header.DataLength <= 0)
            {
                throw new IOException("Length of header was zero");
            }

            //we then make a buffer that will receive the data
            var dataBuffer = new byte[header.DataLength];
            var received   = _socket.ReceiveFull(dataBuffer);

            if (received < dataBuffer.Length)
            {
                throw new IOException($"Received {received} bytes, expected {dataBuffer.Length}.");
            }

            return(dataBuffer);
        }