В Dart вы можете прослушивать новые строки в сокете, используя различные методы в зависимости от конкретных требований вашего приложения. Вот несколько различных подходов с примерами кода:
-
Использование библиотеки
dart:io:import 'dart:io'; void main() async { ServerSocket server = await ServerSocket.bind('127.0.0.1', 1234); print('Socket listening on ${server.address}:${server.port}'); await for (Socket socket in server) { print('Client connected: ${socket.remoteAddress}:${socket.remotePort}'); socket.transform(utf8.decoder).listen((String data) { print('Received data: $data'); // Process the received data }); } } -
Использование библиотеки
dart:ioс необработанными сокетами:import 'dart:io'; void main() async { RawServerSocket server = await RawServerSocket.bind('127.0.0.1', 1234); print('Socket listening on ${server.address}:${server.port}'); await for (RawSocket socket in server) { print('Client connected: ${socket.remoteAddress}:${socket.remotePort}'); socket.listen((RawSocketEvent event) { if (event == RawSocketEvent.read) { String data = String.fromCharCodes(socket.read()); print('Received data: $data'); // Process the received data } }); } } -
Использование библиотеки
dart:ioиStreamTransformer:import 'dart:io'; import 'dart:convert'; void main() async { ServerSocket server = await ServerSocket.bind('127.0.0.1', 1234); print('Socket listening on ${server.address}:${server.port}'); await for (Socket socket in server) { print('Client connected: ${socket.remoteAddress}:${socket.remotePort}'); StreamTransformer<List<int>, String> transformer = StreamTransformer.fromHandlers( handleData: (List<int> data, EventSink<String> sink) { String message = utf8.decode(data); sink.add(message); }); socket.transform(transformer).listen((String data) { print('Received data: $data'); // Process the received data }); } }
с соответствующим IP-адресом, если вы хотите прослушивать другой сетевой интерфейс.