sockets - 在 Flutter 中使用 listen() 从 TCP Socket 获取数据
问题描述
我需要一种从我制作但不使用 Socket 方法的 TCP Java 服务器检索数据(在 Flutter 应用程序内)的方法socket.listen()
。我想要这样的东西socket.read()
可能会返回,Future<Uint8List>
所以我可以等待。这样的事情存在吗?
解决方案
即使存在这样的方法(顺便说一句,RawSocket
具有这样的功能,但它是非阻塞的,并且只会返回可用的内容 - 可能为零字节),您仍然会遇到一些问题。
未来将以任意数量的字节完成,这可能不是整个消息,因此您必须保存这些字节并等待更多。
可能更重要的是,您将如何使用这种方法?也许像这样?
Future<Uint8List> readBytes() async {
return await _socket.read(); // NB no such method really exists
}
但是你如何使用它呢?
readBytes().then((bytes) {
// process the bytes
});
但是,这并不简单
socket.listen((bytes) {
// process the bytes
});
也许您可以解释您不喜欢什么listen
或为什么不能使用它。请记住,您可能在 Java 中使用的阻塞读取通常在后台线程上完成,而在 Dart 中则没有。
推荐阅读
- asp.net - 如何在背景图片中放置文字?
- javascript - 如何从反应组件、react-redux 中的异步函数获取数据?
- javascript - 将停放的域页面重定向到新域中的所有共存页面
- reactjs - react的map函数中的setState
- sql - 选择所有产品的数量
- javascript - HTML、JS 随机码生成器不工作
- java - select语句中的mybatis动态列
- android - Android - 翻译后画布不绘制?
- c# - C# + C++ 中的 Windows 服务拒绝在 Docker 中启动
- amazon-ses - AWS [SES]:获取 ProductionAccessNotGrantedException 背后的原因