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);
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д