【问题标题】:How to connect Flutter app to tcp socket server?如何将 Flutter 应用程序连接到 tcp 套接字服务器?
【发布时间】:2019-02-02 03:34:55
【问题描述】:

我很难将 Flutter 应用程序连接到服务器上的网络 tcp 套接字。我知道我必须使用某种中间选项,以便在 tcp socket 到 flutter 和 Flutter 到 tcp socket 之间转换数据。

任何想法,信息如何实现这一点。问题是如何将 Flutter 应用程序连接到 tcp 套接字服务器?

【问题讨论】:

  • 你看到这个插件了吗? pub.dartlang.org/packages/flutter_socket_io
  • 这个插件是否支持 HTTPS、SSL、TLC ......我在他们的示例中看不到任何内容,他们的文档也没有说明任何关于安全性的内容
  • 不知道,实际上从未使用过它,以防万一您错过了它。从您的问题中不清楚您已经尝试做什么以及您测试了哪些插件。
  • 如果您只想要一个 TCP 套接字,请使用:Socket s = await Socket.connect(host, port); 用于 SSL/TLS 替换为 SecureSocket。对于 HTTPS,请使用 HttpClientpackage:http
  • 你有 SecureSocket 的例子吗,我在渡槽控制器中使用这个操作。我的问题是 tcp 套接字总是打开的。它的旧系统,并且可以获得足够的信息套接字是如何构建的。休息我会在你下面的答案下发帖

标签: sockets dart flutter tcpclient


【解决方案1】:

这是连接到服务器上 TCP 套接字的最简单的 Dart 程序。它发送“你好”,等待 5 秒等待任何回复,然后关闭套接字。您可以将其与您自己的服务器或简单的回显服务器(如 this one)一起使用。

import 'dart:io';
import 'dart:convert';
import 'dart:async';

main() async {
  Socket socket = await Socket.connect('192.168.1.99', 1024);
  print('connected');

  // listen to the received data event stream
  socket.listen((List<int> event) {
    print(utf8.decode(event));
  });

  // send hello
  socket.add(utf8.encode('hello'));

  // wait 5 seconds
  await Future.delayed(Duration(seconds: 5));

  // .. and close the socket
  socket.close();
}

【讨论】:

  • 谢谢理查德,我做了类似的事情。我可以连接到服务器并在不到一秒的时间内获取数据,并且我可以看到我在 55 毫秒到 375 毫秒左右获得的大部分数据。所以等待 5 秒,它在 Flutter 移动应用上的速度非常慢。
  • 我有 7 或 8 个查询,其中包含大量数据。你使用socket.listen。在我的示例中,我在套接字循环中使用了 var 数据。我的所有查询循环运行一次。但是那些 7 或 8 个查询我可以看到循环运行 5 或 6 次。我不知道从服务器获取的数据的结尾字符是什么。当我最后一次向服务器发送查询时,我使用 \r\n
  • 在\r\n 服务器开始将数据发回给我之后。它在 main() async {...} 中运行良好,但我在渡槽 Future handle(Request request) async {...} 中遇到问题
  • 我使用 aqueduct 作为 Flutter 移动应用程序和服务器上的 tcp 套接字之间通信的中间部分。如果我切换到服务器端 Dart,你会介意吗?移动应用程序加密数据并使用 https 发送到服务器。服务器前端我有一个 nginx 将数据发送回 127.0.0.1:8888(这是渡槽)。在 aqueduct 中解密数据并更改数据格式并发送到服务器,然后 aqueduct 监听服务器,并在获取数据时进行格式化和加密并发送回 Flutter Mobile。如果我切换到服务器端 Dart,也许我可以克服我的问题。有什么信息吗?
  • 我只是在等待 5 秒钟,然后关闭套接字。它不会引入任何“缓慢”!为什么你不知道服务器的结束字符?询问设计师或阅读规范。整个事情听起来很复杂。你需要解释你的设计,你的实现,然后是你的问题。你最近的一组问题没有得到高质量的答案,因为其中没有什么是清楚的。 (我认为问题在于您的设计不清楚。不幸的是,SO 不是设计问题的好论坛,因为它们往往违反“意见”规则。)
猜你喜欢
  • 1970-01-01
  • 2019-07-10
  • 2011-12-20
  • 1970-01-01
  • 2021-12-15
  • 2020-01-04
  • 1970-01-01
  • 1970-01-01
  • 2021-10-27
相关资源
最近更新 更多