Возможно в node.js (модуль net) принять повреждённые данные через TCP/IP?

Привет, есть сервер, который шлёт xml документы:
<xml>DATA</xml>
<xml>text</xml>


и есть клиент на node.js, который подключается к серверу:
var net = require('net');
var client = net.connect({port: 8124},
  client.on('data', function(data) {
       console.log(data.toString());
  });


Если учесть, что и сервер работает корректно, и отправляет хорошие данные,
вопрос - возможна ли ситуация, когда при событии
client.on('data'
я получу
<xml>DAext</xml>
<xml>teTA</xml>

из-за проблем в сети или коммутационном оборудовании?
Или tcp и node.js позаботятся обо мне в этом случае, тогда что самое сломанное, что я могу получить?
  • Вопрос задан
  • 3123 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
по идее об этом должна заботиться операционная система, которая, получив побитый tcp пакет сверит хэш-сумму с той, что указана в заголовках пакета, и просто выбросит его, после чего отправителю пойдет ICMP сообщение об ошибке, и тот перешлет пакет снова.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ghaiklor
@ghaiklor
NodeJS TechLead
Механизм TCP предоставляет поток данных с предварительной установкой соединения, осуществляет повторный запрос данных в случае потери данных и устраняет дублирование при получении двух копий одного пакета, гарантируя тем самым, в отличие от UDP, целостность передаваемых данных и уведомление отправителя о результатах передачи.
(c) Wikipedia
NodeJS может принимать chunk'ами, то есть кусками. Соответственно может в этот момент на вашей стороне происходить пролёты, если вы об этом не позаботитесь.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
22 мая 2024, в 07:09
50000 руб./за проект
22 мая 2024, в 02:15
10000 руб./за проект
21 мая 2024, в 23:47
30000 руб./за проект