C#, сокеты, отправка листов через сокеты

Есть List<string> name, его нужно передать через сокет. Как мне это сделать? Можно ли его перевести в массив байтов?


Ответы (1 шт):

Автор решения: Aziz Umarov

Для начала переведите List name в один String. Вариантов много можно в Json

using System.Text.Json;

var json = JsonSerializer.Serialize(aList);

,

XML

var serializer = new XmlSerializer(typeof(List<Branch>),
                                   new XmlRootAttribute("Branches"));
using(var stream = new StringWriter())
{
    serializer.Serialize(stream, branches);
    System.Console.Write(stream.ToString());
}

, "свой персональный шифрованный формат". string.Join( ... )

Затем

byte[] bytes = Encoding.ASCII.GetBytes(someString);

Далее как обычно вот пример

/ Displays sending with a connected socket
// using the overload that takes a buffer, message size, and socket flags.
public static int SendReceiveTest3(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int i = server.Send(msg, msg.Length, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", i);

        // Get reply from the server.
        int byteCount = server.Receive(bytes, server.Available,
                                           SocketFlags.None);
        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
→ Ссылка