Показать сообщение отдельно
Непрочитано 12.10.2015, 16:48   #7
Аватар для Zubastic
ZG troll squad

Автор темы (Топик Стартер) Re: Чтение из сокета

Остановился на этом:
        private void TcpListenToClient()
        {
            var offset = 0;
            var buffer = new byte[16384];
            Connected = SocketToClient.Connected;
            while (Connected)
            {
                try
                {
                    offset += SocketToClient.GetStream().Read(buffer, offset, 16384 - offset);
                    var packetLength = BitConverter.ToInt16(new[] {buffer[0], buffer[1]}, 0);
                    while (offset >= packetLength && packetLength > 0)
                    {
                        var inputPacket = new byte[packetLength];
                        offset -= packetLength;
                        Array.Copy(buffer, 0, inputPacket, 0, packetLength);
                        Array.Copy(buffer, packetLength, buffer, 0, 16384 - packetLength);
                        _readFromClient.Add(inputPacket);
                        _dbg.Information("[ReadFromClient] Raw Packet:" + BitConverter.ToString(inputPacket));
                        packetLength = BitConverter.ToInt16(new[] {buffer[0], buffer[1]}, 0);
                    }
                }
                catch
                {
                    Close();
                }
            }
        }
Code: C++
__________________
Zubastic вне форума Ответить с цитированием