Склеивание пакетов на java>python сокетах

140
16 февраля 2018, 18:34

Привет пиплы! Python сервер:

import socket, os
s = socket.socket()
s.bind(('0.0.0.0', 500))
s.listen(5)
while True:
    c, addr = s.accept()
    data = c.recv(1024)
    print(str(data))

Java клиент:

String data = "Test";
try (Socket socket = new Socket("localhost", 5000)) {
    try (DataOutputStream os = new DataOutputStream(socket.getOutputStream())) {
        while(true){
         os.write(data.getBytes("utf-8"), 0, data.length());
        }
    }
}

При очень большом потоке пакетов происходит склеивание(сервер выводит "TestTe" или TestTestTest) как это исправить?

Answer 1

UDP использует простую модель передачи, без неявных «рукопожатий» для обеспечения надёжности, упорядочивания или целостности данных. Таким образом, UDP предоставляет ненадёжный сервис, и датаграммы могут прийти не по порядку, дублироваться или вовсе исчезнуть без следа. UDP подразумевает, что проверка ошибок и исправление либо не нужны, либо должны исполняться в приложении.

https://ru.wikipedia.org/wiki/UDP

Отсюда следует, что вам придётся из клиента вместе с каждым символом отправлять его порядковый номер, а на сервере добавить код проверки, что номера идут подряд без разрывов, код повторного запроса потерянных пакетов, код игнорирования дублей и код упорядочивания принятых данных. Либо перейти на использование протокола TCP, который всё это реализует за вас.

READ ALSO
jQuery обработчик нажатия checkbox, которого еще нет

jQuery обработчик нажатия checkbox, которого еще нет

Есть обработчки нажатия на input checkbox

205
Помощь с калькулятором jquery

Помощь с калькулятором jquery

Вроде получается определить значения полей, но как их суммировать и чтобы выводилось в результат - совсем не получаетсяЗаранее спасибо за помощь

260
jquery clone() дублирует клонированные обьекты

jquery clone() дублирует клонированные обьекты

начну сначала, потому что не уверен где проблема скрываетсяесть проект где страницы загружаются путем ajax в том числе и javascript'ы путем

237