【问题标题】:Flutter: How to send packages as a tcp clientFlutter:如何作为 tcp 客户端发送包
【发布时间】:2019-10-28 06:18:50
【问题描述】:

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

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

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

控制命令
5. 向HHC-NET2D发送“on1”将开启First relay
6. 向HHC-NET2D发送“on2”将开启第二次继电器
7. 向HHC-NET2D发送“off1”将开启First relay
8. 向HHC-NET2D发送“off2”将开启第二次继电器

在此处阅读更多信息: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(...)
  }
}

【问题讨论】:

    标签: sockets flutter dart tcp


    【解决方案1】:

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

    在你的代码中更新这个:

    socket.write(HERE_STRING_MESSAGE);
    

    【讨论】:

      猜你喜欢
      • 2018-09-19
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 2011-08-15
      • 2021-05-08
      • 2017-05-13
      • 2021-07-16
      • 2013-09-14
      相关资源
      最近更新 更多