Задать вопрос

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

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

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