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);
}
}
}
}