Протоколы TCP и UDP в C#

Протоколы TCP (Transmission Control Protocol) и UDP (User Datagram Protocol) используются для передачи данных в сети. Они работают на транспортном уровне модели OSI и определяют, как информация передаётся между узлами.

TCP (Transmission Control Protocol)

TCP — это протокол с установлением соединения, обеспечивающий гарантированную доставку данных. Он контролирует порядок передачи пакетов и их целостность.

Основные характеристики TCP

  • Надёжная передача данных
  • Контроль потока
  • Коррекция ошибок
  • Упорядоченная доставка

Пример TCP-сервера на C#

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

class Program
{
    static void Main()
    {
        TcpListener server = new TcpListener(IPAddress.Any, 5000);
        server.Start();
        Console.WriteLine("Сервер запущен");
        TcpClient client = server.AcceptTcpClient();
        NetworkStream stream = client.GetStream();
        byte[] buffer = Encoding.UTF8.GetBytes("Привет от сервера!");
        stream.Write(buffer, 0, buffer.Length);
    }
}

UDP (User Datagram Protocol)

UDP — это протокол без установления соединения. Он не гарантирует доставку данных, но быстрее TCP, что делает его полезным для потокового видео, VoIP и онлайн-игр.

Основные характеристики UDP

  • Нет установления соединения
  • Высокая скорость передачи
  • Возможна потеря пакетов
  • Нет контроля потока

Пример UDP-сервера на C#

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

class Program
{
    static void Main()
    {
        UdpClient server = new UdpClient(5000);
        IPEndPoint remoteEP = new IPEndPoint(IPAddress.Any, 0);
        Console.WriteLine("UDP сервер запущен");
        byte[] receivedBytes = server.Receive(ref remoteEP);
        string receivedData = Encoding.UTF8.GetString(receivedBytes);
        Console.WriteLine($"Получено: {receivedData}");
    }
}

TCP подходит для приложений, требующих надёжности, таких как веб-приложения и базы данных. UDP лучше использовать там, где важна скорость, например в мультимедиа-приложениях.