Dart RawSockets的用途是什么?

时间:2019-04-18 04:56:27

标签: c sockets networking dart flutter

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

而且,Dart RawSockets和普通Sockets有什么区别?

1 个答案:

答案 0 :(得分:2)

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

RawSocket是下层概念。现在,不再需要获取字节流,而只是告诉您何时可以读取字节。 (您会获得一系列事件,告诉您何时有数据可用。您有责任然后调用read来收集它们。)这使您可以在使用{{1}的Unix套接字模式下进行更多工作。 }知道有可用的数据,以便您在尝试读取数据时不会阻塞。

Dart的流使您免于选择/阻止不同语言的读取/分离读取器线程的大部分责任。从select进行读取时,您不必担心,数据仅在可用时才到达流中。

请注意如何只有Socket。这是有道理的,因为UDP数据包是离散的,而不是字节流。 UDP套接字仅告诉您可以读取一个包,然后读取它。