FlutterFlutterFlutter圈子

Flutter TCP连接

2021-08-14  本文已影响0人  孤街酒客0911
import 'dart:convert';
import 'dart:io';
import 'package:flutter_umi_oil/component_base/api/api.dart';

class SocketManage {
static Socket _socket;

  // 建立连接
  static void connectSocket() async {
    await Socket.connect(
      "${Api.IP}",
      Api.TcpPort,
      timeout: Duration(seconds: 5),
    ).then((Socket socket) {
      _socket = socket;
      _socket.listen(onData,
          onError: onError, onDone: onDone, cancelOnError: false);  // 订阅流
    }).catchError((e) {
      print("Unable to connect: $e");
      connectSocket(); // 连接超时,重新建立连接
    });
  }

  // 收到消息回调
  static void onData(event) {
    String str = utf8.decode(event);
    print("---onData---$str");
  }

  // 收到错误回调
  static void onError(err) {
    print("---onError---");
  }

  // 断开回调
  static void onDone() {
    Future.delayed(Duration(milliseconds: 2000), () {
      connectSocket(); // 重新建立连接
    });

    print("---onDone---");
  }

  // 发数据
  static void writeData(Object object){
    _socket.write(object);
  }

  // 关闭流通道
  static void socketClose(){
    _socket.close();
  }
}
上一篇 下一篇

猜你喜欢

热点阅读