sockets - Flutter:如何作为 tcp 客户端发送包

标签 sockets flutter dart tcp

我正在尝试连接到 HHC-NET2D 中继设备。

该设备允许连接到 TCP 客户端。我还没有找到可以将参数发送到设备的解决方案。如果有人知道通过 tcp 客户端建立连接并发送参数的推荐方法,那将会很有帮助。

支持
1.支持TCP服务器、TCP客户端、UDP
2. TCP服务器支持4个客户端连接。假设本地端口为5000。端口5000可以 连接到 TCP 客户端。
3.支持TCP MODBUS协议(protocol)。

控制命令
5. 发送“on1”到HHC-NET2D将打开第一个继电器
6. 发送“on2”到HHC-NET2D将打开第二个继电器
7. 发送“off1”到HHC-NET2D将打开第一个继电器
8. 发送“off2”到HHC-NET2D将打开第二个继电器

Read more here: https://es.aliexpress.com/item/32358735415.html

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: HomeApp(),
    );
  }
}

class HomeApp extends StatefulWidget {
  @override
  _HomeAppState createState() => _HomeAppState();
}

class _HomeAppState extends State<HomeApp> {
  Socket socket;
  String name;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(name == null ? 'NO CONNECTED' : name),
      ),
      body: Container(
        child: Column(
          children: <Widget>[
            RaisedButton(
              child: Text('Connect'),
              onPressed: (){
                connect();
              },
            ),
            RaisedButton(
              child: Text('Send Data'),
              onPressed: (){
                sendData();
              },
            )
          ],
        ),
      ),
    );
  }

  // Socket connection
  void connect() {
    Socket.connect("ipHere", portHere).then((Socket sock) {
      socket = sock;
      socket.listen(
          dataHandler,
          onError: errorHandler,
          onDone: doneHandler,
          cancelOnError: false
      );
    });
  }
  void dataHandler(data){
    setState(() {
      name = new String.fromCharCodes(data).trim();
    });
  }
  void errorHandler(error, StackTrace trace){
    print(error);
  }
  void doneHandler(){
    socket.destroy();
  }
  void sendData(){
    //socket.write(...)
  }
}

最佳答案

首先使用您要发送的消息创建一个字符串变量。

并在您的代码中更新:

socket.write(HERE_STRING_MESSAGE);

关于sockets - Flutter:如何作为 tcp 客户端发送包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58582428/

相关文章:

java - 如何在进程终止时执行操作?

java - Android Socket TCP 数据丢失

android - Flutter Firebase删除子集合不起作用

Flutter 无法创建目录(操作系统错误 : Read-only file system)

firebase - flutter firebase 我如何获得一个节点的所有子节点

flutter 如何在点击时动态更改文本颜色?

c++ - recv() 字符数组大小

C 套接字 : why is my server appending extra characters in the end?

animation - 补间动画和动画 Controller 的区别

dart - Dart 1.8 中的异步/等待功能