搜索插件、代码仓与 APP 分类

插件详情v0.3.1

tcp_socket_connection

一个用于通过 TCP 套接字连接、监听和发送消息的 Flutter 包。

AndroidiOSmacOSWindowsLinux
近 30 天下载
381
喜欢数
43
Pub 分数
150

安装插件

flutter pub add tcp_socket_connection

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

一个 Flutter 包,支持跨平台的 TCP 套接字通信,用于连接、监听和发送消息。它提供了一个简单的接口,用于建立持久的 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!

所属分类

源码仓库

使用此插件的项目

暂无相关数据。