Что произойдет, если приемник не сможет обрабатывать скорость передачи данных через сокет?

Откройте терминал и выполните следующие команды:

sudo apt-add-repository ppa:gnurubuntu/rubuntu sudo apt-get update

Это автоматически добавит запись в ваш исходный список на основе вашей версии Ubuntu.

Установите сервер и монитор:

sudo apt-get install rcssserver rcssmonitor
0
10.08.2020, 07:00
1 ответ

Если получатель читает не так быстро, как отправитель, буферы сокетов через некоторое время заполняются.

При допущении типа сокета дейтаграммы блокирующий сокет блокируется, если буферы заполнены, и, таким образом, неявно замедляет отправителя. С неблокирующим сокетом -отправка сообщения просто не удастся, и EAGAINбудет возвращен как ошибка send. Обратите внимание, что это верно только для доменных сокетов unix типа дейтаграмма. С сокетами UDP отправка будет успешной, и сообщения будут просто потеряны.

При использовании потокового сокета может быть записано частичное сообщение, независимо от того, является ли сокет блокирующим или неблокирующим -. Отправитель должен проверить, сколько байтов фактически записано (и вернутьsend)и обязательно отправить оставшиеся данные позже. С неблокирующим сокетом -sendтакже может полностью выйти из строя с EAGAIN, с блокирующим сокетом вместо этого он будет блокироваться и ждать, пока получатель прочитает некоторые данные, чтобы снова иметь место в буфере сокета.

2
18.03.2021, 23:13

Теги

Похожие вопросы