Отправить сериализованный объект через сокет по UDP - C#

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

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

Доброй ночи! Нужна консультация по отправке сериализованного объекта по UDP-протоколу (размер файла невелик, файл будет содержать 4 структуры данных Point c 2-мя координатами, итого 8 целых чисел). С процессом сериализации и десериализации разобался. Значения (для примера пока только одну точку занес в файл) пишутся в файл "points.dat". Теперь следущий этап надо отправить этот файл в сокет через UDPClient и на стороне сервера принять десериализовать, получить доступ к полям и работать с этим . Profit!!! Подскажите пожалуйста как отправить сериализованную структуру все таки на сторону сервера. Буду очень ризнателен если чиркните пару строк кода, как это добро все переслать и принять на сервере, а то я с шарпами пока не особо давно дружу. Вообще реализовывал UDP взаимодействия, но не проделывал таких фич над сериализованными файлами. Если знаете где можно подсмотреть реализацию такого рода пересылки киньте изучу. Заранее спасибо!!! Вот код клиента:
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace Serialization
{
    [Serializable]
    class Point
    {
        public int x { get; set; }
        public int y { get; set; }
 
        public Point(int X, int Y)
        {
            x = X;
            y = Y;
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            // объект для сериализации
            Point point1 = new Point(120, 29);
            Console.WriteLine("Объект создан");
 
            // создаем объект BinaryFormatter
            BinaryFormatter formatter = new BinaryFormatter();
            // получаем поток, куда будем записывать сериализованный объект
            using (FileStream fs = new FileStream("points.dat", FileMode.OpenOrCreate))
            {
                formatter.Serialize(fs, point1);
 
                Console.WriteLine("Объект сериализован");
            }
 
            // десериализация из файла 
            using (FileStream fs = new FileStream("points.dat", FileMode.OpenOrCreate))
            {
                Point newPoint = (Point)formatter.Deserialize(fs);
 
                Console.WriteLine("Объект десериализован");
                Console.WriteLine("Имя: {0} --- Возраст: {1}", newPoint.x, newPoint.y);
            }
 
            Console.ReadLine();
        }
    }
}

Решение задачи: «Отправить сериализованный объект через сокет по UDP»

textual
Листинг программы
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.IO;
 
class Program
{
    [Serializable]
    class Point
    {
        public int x { get; set; }
        public int y { get; set; }
 
        public Point(int X, int Y)
        {
            x = X;
            y = Y;
        }
    }
    static void Main(string[] args)
    {
        Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
        IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9050);
        sock.Bind(iep);
        EndPoint ep = (EndPoint)iep;
        Console.WriteLine("Ready to receive...");
 
        byte[] data = new byte[1024];
        int recv = sock.ReceiveFrom(data, ref ep);
        string stringData = Encoding.ASCII.GetString(data, 0, recv);
        Console.WriteLine("received: {0} ", stringData);
        sock.Close();
 
    /*    // десериализация из файла points.dat
        using (FileStream fs = new FileStream("points.dat", FileMode.OpenOrCreate))
        {
            Point newPoint = (Point)formatter.Deserialize(fs);
 
            Console.WriteLine("Объект десериализован");
            Console.WriteLine("Имя: {0} --- Возраст: {1}", newPoint.x, newPoint.y);
        }
 
       */
    }
}

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


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

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

9   голосов , оценка 3.778 из 5