Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗dtSpUdSnd 204 of 224 menu
◀ ▶

Отправка UDP-пакета в Dart

Отправка начинается с текста на английском и списка байтов через utf8.encode. Метод send у RawDatagramSocket принимает данные, InternetAddress хоста и номер порта. Адрес InternetAddress.loopbackIPv4 указывает на ту же машину, где запущена программа.

Порт назначения берут у сокета-приемника после его запуска. Полный пример с подпиской на прием выглядит так:

import 'dart:async'; import 'dart:convert'; import 'dart:io'; void main() async { var receiver = await RawDatagramSocket.bind( InternetAddress.loopbackIPv4, 0, ); var listenPort = receiver.port; var done = Completer<void>(); receiver.listen((event) { if (event == RawSocketEvent.read) { receiver.receive(); done.complete(); } }); var sender = await RawDatagramSocket.bind( InternetAddress.loopbackIPv4, 0, ); sender.send( utf8.encode('ping'), InternetAddress.loopbackIPv4, listenPort, ); await done.future; receiver.close(); sender.close(); }

Другой текст кладут в тот же каркас - меняют только строку перед utf8.encode. Размер списка можно вывести для проверки:

import 'dart:async'; import 'dart:convert'; import 'dart:io'; void main() async { var receiver = await RawDatagramSocket.bind( InternetAddress.loopbackIPv4, 0, ); var listenPort = receiver.port; var done = Completer<void>(); receiver.listen((event) { if (event == RawSocketEvent.read) { receiver.receive(); done.complete(); } }); var sender = await RawDatagramSocket.bind( InternetAddress.loopbackIPv4, 0, ); var data = utf8.encode('order 42'); sender.send( data, InternetAddress.loopbackIPv4, listenPort, ); print(data.length); await done.future; receiver.close(); sender.close(); }

Отправьте на localhost пакет с текстом "lab send". Выведите полученную строку в консоли приемника.

Отправьте два пакета подряд с текстами "first" и "second" на один порт. Приемник напечатает обе строки по порядку.

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