搜尋套件、儲存庫與 APP 分類

套件詳情v0.3.1

tcp_socket_connection

一個用於透過 TCP 套接字連接、監聽和發送訊息的 Flutter 套件。

AndroidiOSmacOSWindowsLinux
近 30 天下載
381
喜歡數
43
Pub 分數
150

安裝套件

flutter pub add tcp_socket_connection

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

一個 Flutter 套件,支援跨平台的 TCP socket 通訊,用於連接、監聽和傳送訊息。它提供簡單的介面,以建立持續的 TCP 連線,處理即時資料交換,並管理連線狀態。適合需要底層網路控制的應用程式,例如物聯網裝置、自訂協定或後端整合。此套件支援 Android、iOS、macOS、Windows 與 Linux,確保跨平台相容性。使用 Dart 編寫,可輕鬆整合至現有的 Flutter 項目中。

適用情境

  • 即時設備通訊
  • 自定義協議實現
  • 物聯網應用網路
  • 後端服務整合
  • 跨平台網路應用

主要特色

  • TCP連接管理
  • 訊息發送和接收
  • 跨平台支援
  • 連接狀態監控
  • 用於套接字操作的簡單 API

適合對象

  • 開發即時網路應用的開發者
  • 物聯網和嵌入式系統整合
  • 需要直接 TCP 控制的應用程式
  • 需要輕量級 RPC 的項目
  • 針對多個作業系統的團隊

使用建議

  • 需要 Android/iOS 的網路權限
  • 手動處理連接中斷
  • 無內建加密(需另行使用 TLS)
  • 與成熟的套件相比,文件較少
  • 不適用於高階網路協議,如 HTTP

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

tcp_socket_connection

This is a Flutter package that allows you to connect to a socket over the net. All data is then read using UTF-8.

Getting started

To use this plugin, add tcp_socket_connection as a dependency in your pubspec.yaml file.

Main Example

Here is shown an example where a connection is established and the received message is displayed in a Text widget.

import 'package:flutter/material.dart';
import 'package:tcp_socket_connection/tcp_socket_connection.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);
  final String title;
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  //Instantiating the class with the Ip and the PortNumber
  TcpSocketConnection socketConnection=TcpSocketConnection("192.168.1.113", 10251);

  String message="";

  @override
  void initState() {
    super.initState();
    startConnection();
  }

  //receiving and sending back a custom message
  void messageReceived(String msg){
    setState(() {
      message=msg;
    });
    socketConnection.sendMessage("MessageIsReceived :D ");
  }

  //starting the connection and listening to the socket asynchronously
  void startConnection() async{
    socketConnection.enableConsolePrint(true);    //use this to see in the console what's happening
    if(await socketConnection.canConnect(5000, attempts: 3)){   //check if it's possible to connect to the endpoint
      await socketConnection.connect(5000, messageReceived, attempts: 3);
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Text(
          'You have received '+ message,
        ),
      ),
    );
  }
}

Usage

First of all declare a new instance of the TcpSocketConnection class:

TcpSocketConnection socketConnection=TcpSocketConnection(IP_ADDRESS, PORT_NUMBER);

Then, to establish a connection it's used the following method:

await socketConnection.connect(TIMEOUT, CALLBACK_FUNCTION);

The method connect allows you to set a TIMEOUT before finishing attempting to connect, a CALLBACK_FUNCTION that is created by the developer and takes a String as parameter. The CALLBACK_FUNCTION will be called when the message is received.

The word await is really important since the connection requires a little bit of time to be initialized. Write that line of code inside an async method to ensure it doesn't impact the UI.

To send a message use the following method:

socketConnection.sendMessage(MESSAGE);

In case you want to send a message with also an EOM you can directly use the following method:

socketConnection.sendMessageEOM(MESSAGE,EOM);

It will automatically append the EOM (End Of Message) at the end of the MESSAGE.

Examples

Imagine you are receiving a String from a server which states "Confirm?FINISH". In order to read it you have to listen to the server asynchronously until you receive the EOM (End of Message) to be sure that the message is finished. After that you have to split the String and keep only the part you need, in this case "Confirm?". This is all done by the connectEOM method in only 1 line of code!

await socketConnection.connectEOM(TIMEOUT, EOM, CALLBACK_FUNCTION, {ATTEMPTS=1});

Imagine you are receiving a String from a server. With the connect method you can read messages received (that probably need to be elaborated by you: the developer) in only 1 line of code!

await socketConnection.connect(TIMEOUT, CALLBACK_FUNCTION, {ATTEMPTS=1});

Last but not least

If you find this package useful, don't forget to leave a like! I appreciate it!

所屬分類

原始碼儲存庫

使用此套件的專案

暫無相關資料。