Какая польза от Dart RawSockets? - PullRequest
0 голосов
/ 18 апреля 2019

Я имею в виду, что я читал вопросы о Dart RawSockets, а также читал API, но мне не было понятно, как их использовать. Являются ли Dart RawSockets такими же, как C rawsockets?

Кроме того, в чем разница между Dart RawSockets и обычными сокетами?

1 Ответ

2 голосов
/ 18 апреля 2019

A Socket - это концепция более высокого уровня.Он реализует Stream байтов (фактически байтовых массивов) и IOSink.listen в поток, и данные, поступающие в сокет, появляются в потоке.Если вы хотите отправить данные по сокету, add это в приемник, и он уходит.

A RawSocket - это концепция нижнего уровня.Теперь вместо того, чтобы получить поток байтов, вам просто сообщают, когда байты доступны для чтения.(Вы получаете поток событий, сообщающий вам, когда данные доступны. Вы отвечаете за то, чтобы затем позвонить read для их сбора.) Это позволяет вам больше работать в режиме сокета Unix, где вы используете select, чтобы знать, чтоесть доступные данные, так что вы не блокируете их при попытке прочитать.

Потоки Дарт освобождают вас от большой ответственности за выбор / блокировку чтения / отдельного потока чтения различных языков.При чтении из Socket вам не нужно беспокоиться, данные просто поступают в поток, когда они доступны.

Обратите внимание, что существует только RawDatagramSocket.Это имеет смысл, поскольку UDP-пакеты являются дискретными, а не байтовым потоком.Сокет UDP просто сообщает вам, что пакет доступен для чтения, и вы затем читаете его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...