Member 14179902 Ответов: 1

C#: как разделить вход TCP на несколько частей?


Я хочу разделить интегрированный входной сигнал, который я получаю от TCP-соединения(в байтах), на несколько различных байтовых массивов.У меня есть сервер и клиент. сервер, который шифрует сообщение с помощью 3DES и шифрует ключ и IV с помощью RSA.
Затем он объединяет их вместе следующим образом (открытый текст + зашифрованный текст + ключ + IV) и отправляет его клиенту.
Клиент должен прочитать от байтов 0 до 20 и сохранить его как открытый текст, затем прочитать от байтов 21 до 129 и сохранить его как ключ и так далее. Есть какие-нибудь идеи о том, как реализовать его в C#? Я был бы признателен вам за помощь.


void ReadFromTCPClientStream(IAsyncResult iar)
        {
            TcpClient tcpClient;
            int nCountReadBytes = 0;
            try
            {
                tcpc = (TcpClient)iar.AsyncState;
                nCountReadBytes = tcpc.GetStream().EndRead(iar);

                if(nCountReadBytes == 0)
                {
                    printStatus("Client disconnected");
                    return;
                }

                readBuff = new byte[512];
                tcpc.GetStream().BeginRead(readBuff, 0, readBuff.Length,           ReadFromTCPClientStream, tcpClient);
                
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }



я хочу разделить readbuff на несколько байтовых массивов, как я уже сказал.

Что я уже пробовал:

I think with the foreach it can read from one byte to another byte and then store it.But I don't know exactly how?

Gerry Schmitz

readBuff = новый байт[512];

Кусок через это.

1 Ответов

Рейтинг:
7

RickZeeland

Видеть: Массив.Метод CopyTo (Система) | Microsoft Docs[^]
Или альтернатива: Буфер.BlockCopy[^]


Member 14179902

Большое спасибо.