Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csSpUdSev 497 of 509 menu
◀ ▶

Несколько UDP-пакетов в C#

Серия датаграмм на одном сокете обрабатывается в цикле с конечным счетчиком.

Цикл вызывает SendAsync для каждой строки. Ниже отправитель три раза шлет текст и печатает каждую строку:

using System.Net.Sockets; using System.Text; using UdpClient sender = new(); for (int i = 1; i <= 3; i++) { string text = "part" + i; byte[] payload = Encoding.UTF8.GetBytes(text); await sender.SendAsync(payload, payload.Length, "127.0.0.1", 18081); Console.WriteLine(text); }

Ответ на каждый пакет тоже можно слать в цикле на адрес из соответствующего приема. Отправитель тогда читает несколько ответов подряд:

using System.Net; using System.Net.Sockets; using System.Text; TaskCompletionSource ready = new(); Task server = Task.Run(async () => { using UdpClient listener = new(18081); ready.SetResult(); for (int i = 0; i < 3; i++) { UdpReceiveResult req = await listener.ReceiveAsync(); await listener.SendAsync(Encoding.UTF8.GetBytes("ok"), req.RemoteEndPoint); } }); await ready.Task; using UdpClient sender = new(); for (int i = 1; i <= 3; i++) { await sender.SendAsync(Encoding.UTF8.GetBytes("q" + i), "127.0.0.1", 18081); UdpReceiveResult ans = await sender.ReceiveAsync(); Console.WriteLine(Encoding.UTF8.GetString(ans.Buffer)); } await server;

Сделайте счётчик посещений на порту 18083: на каждую датаграмму увеличивайте число и возвращайте его текстом отправителю.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить