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

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

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

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

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

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Net.Sockets;
  4. using System.Text;
  5. using System.Threading;
  6.  
  7. namespace ConsoleApplication158
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             new Thread(ServerLoop) { IsBackground = true }.Start();
  14.             new Thread(ClientLoop) { IsBackground = true }.Start();
  15.  
  16.             Console.ReadLine();
  17.         }
  18.  
  19.         static void ServerLoop()
  20.         {
  21.             var list = new TcpListener(24432);
  22.             list.Start();
  23.            
  24.             using (var tcp = list.AcceptTcpClient())
  25.             using (var stream = tcp.GetStream())
  26.             {
  27.                 //принимаем длину сообщения
  28.                 var buffer = new byte[4];
  29.                 stream.Read(buffer, 0, 4);
  30.  
  31.                 //принимаем сообщение
  32.                 var length = BitConverter.ToInt32(buffer, 0);
  33.                 var bytes = new List<byte>();
  34.                 while (bytes.Count < length)
  35.                     bytes.Add((byte)stream.ReadByte());
  36.  
  37.                 //преобразуем в строку, сплитуем по разделителю
  38.                 var str = Encoding.Default.GetString(bytes.ToArray());
  39.                 var array = str.Split('\x0');
  40.  
  41.                 foreach (var s in array)
  42.                     Console.WriteLine(s);
  43.             }
  44.         }
  45.  
  46.         static void ClientLoop()
  47.         {
  48.             var array = new string[] { "авава", "fdfds", "ававы" };
  49.             var bytes = new List<byte>();
  50.  
  51.             foreach(var item in array)
  52.                 bytes.AddRange(Encoding.Default.GetBytes(item + "\x0"));
  53.  
  54.             using (var tcp = new TcpClient("localhost", 24432))
  55.             using ( var stream = tcp.GetStream())
  56.             {
  57.                 //отправляем длину сообщения
  58.                 stream.Write(BitConverter.GetBytes(bytes.Count), 0, 4);
  59.                 //отправляем сообщение
  60.                 stream.Write(bytes.ToArray(), 0, bytes.Count);
  61.             }
  62.         }
  63.     }
  64. }

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


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

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

6   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы