Flutter TCP連接

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();
  }
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容