TcpListener, отправка массива байт: ошибка преобразования типов - C#

Узнай цену своей работы

Формулировка задачи:

Требуется массив отправить на сервер, преобразую массив в массив байт, но при отправке выдает ошибку. Ошибка: "не может преобразовать ' Byte [] []' выражение типа ` байт [] '" Ошибка в строке 10
      //Преобразуем массив в массив байт
      byte[][] data = new byte[message.Length][];
      for (int i = 0; i < message.Length; i++)
     {
     data[i] = GetBytes(message[i]);
      }
     // Получаем поток для чтения и записи данных.
     NetworkStream stream = client.GetStream();
     // Отправляем сообщение нашему серверу. 
     stream.Write(data, 0, data.Length);
Как можно решить проблему ?

Решение задачи: «TcpListener, отправка массива байт: ошибка преобразования типов»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Net.Sockets;
using System.Text;
using System.Threading;
 
namespace ConsoleApplication158
{
    class Program
    {
        static void Main(string[] args)
        {
            new Thread(ServerLoop) { IsBackground = true }.Start();
            new Thread(ClientLoop) { IsBackground = true }.Start();
 
            Console.ReadLine();
        }
 
        static void ServerLoop()
        {
            var list = new TcpListener(24432);
            list.Start();
            
            using (var tcp = list.AcceptTcpClient())
            using (var stream = tcp.GetStream())
            {
                //принимаем длину сообщения
                var buffer = new byte[4];
                stream.Read(buffer, 0, 4);
 
                //принимаем сообщение
                var length = BitConverter.ToInt32(buffer, 0);
                var bytes = new List<byte>();
                while (bytes.Count < length)
                    bytes.Add((byte)stream.ReadByte());
 
                //преобразуем в строку, сплитуем по разделителю
                var str = Encoding.Default.GetString(bytes.ToArray());
                var array = str.Split('\x0');
 
                foreach (var s in array)
                    Console.WriteLine(s);
            }
        }
 
        static void ClientLoop()
        {
            var array = new string[] { "авава", "fdfds", "ававы" };
            var bytes = new List<byte>();
 
            foreach(var item in array)
                bytes.AddRange(Encoding.Default.GetBytes(item + "\x0"));
 
            using (var tcp = new TcpClient("localhost", 24432))
            using ( var stream = tcp.GetStream())
            {
                //отправляем длину сообщения
                stream.Write(BitConverter.GetBytes(bytes.Count), 0, 4);
                //отправляем сообщение
                stream.Write(bytes.ToArray(), 0, bytes.Count);
            }
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы