【问题标题】:What is the use of Dart RawSockets?Dart RawSockets 有什么用?
【发布时间】:2019-04-18 04:56:26
【问题描述】:

我的意思是,我已经阅读了有关 Dart RawSockets 的问题并阅读了 API,但我不清楚如何使用它们。 Dart RawSockets 和 C rawsockets 一样吗?

另外,Dart RawSockets 和普通 Sockets 有什么区别?

【问题讨论】:

    标签: c sockets networking dart flutter


    【解决方案1】:

    Socket 是一个更高级别的概念。它实现了一个Stream 字节(实际上是字节数组)和一个IOSinklisten 到流和到达套接字的数据出现在流中。当你想通过套接字发送数据时,add 将它发送到接收器,然后它就会消失。

    RawSocket 是较低级别的概念。现在,不是获取字节流,而是告诉您何时可以读取字节。 (当数据可用时,您会收到一个事件流。您有责任调用read 来收集它们。)这使您可以在使用select 的Unix 套接字模式下进行更多工作以了解有可用的数据,因此您在尝试读取时不会阻塞。

    Dart 的流使您免去了选择/阻止读取/分离不同语言的阅读器线程的大部分责任。从Socket 读取时,您无需担心,数据会在可用时到达流中。

    注意只有RawDatagramSocket。这是有道理的,因为 UDP 数据包是离散的,而不是字节流。 UDP 套接字只是告诉你有一个数据包可供读取,然后你就可以读取它。

    【讨论】:

    • 感谢您的回答!但是我还不清楚 Dart 的 RawSocket 是否与 C RawSocket 相同,是吗?
    • 不,完全不同。 Dart 的 RawSocket 绝对是一个 TCP 套接字,就像 Dart 的 Socket 一样。
    猜你喜欢
    • 2021-11-11
    • 2012-11-01
    • 2020-11-08
    • 1970-01-01
    • 2021-12-17
    • 2020-12-04
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    相关资源
    最近更新 更多