Введение в сокеты в Dart
TCP-соединение связывает две программы через сеть.
На стороне сервера ServerSocket из dart:io
слушает номер порта на машине; клиент обращается к
адресу и порту, чаще всего к
InternetAddress.loopbackIPv4 при локальной
проверке. После установки связи обе стороны читают
и пишут один непрерывный поток байтов - текст
удобно передавать построчно с переводом строки.
В учебном примере сервер и клиент живут в одном
main: сначала вызывают
ServerSocket.bind и вешают обработчик на
listen, затем клиент подключается к тому же
процессу. Порт 0 при привязке означает
любой свободный; фактический номер берут из
server.port. Сокеты закрывают через
close, чтобы освободить ресурс после обмена.
Строки на сокете записывают методами write
и writeln, читают через поток с
utf8.decoder и LineSplitter из
dart:convert. Долгие операции в
main сопровождают async и
await, чтобы дождаться подключения и
ответа без отдельного потока.
Примеры этого раздела рассчитаны на виртуальную
машину Dart на компьютере. В браузере и в DartPad
библиотеки dart:io с сокетами недоступны,
поэтому код нужно проверять локально через
dart run.