Java - сеанс UDP WAN не выполняется - PullRequest
0 голосов
/ 10 февраля 2012

Java-программа работает полностью, как и ожидалось, используя TCP и UDP по локальной сети.Однако через WAN сторона UDP, несмотря на работоспособность сокетов как на клиенте, так и на сервере, а также отправку и получение пакетов, в лучшем случае обеспечивает частичный симплексный поток данных.Где бы найти наиболее плодотворную область для определения причины этого?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2012

Помните, что при использовании UDP каждое сообщение просто отправляется на провод.Нет гарантии, что он доберется до другой стороны, поэтому вы должны разработать алгоритмы, чтобы решить, когда пакет был потерян и когда его повторить.Нет гарантии, что любая датаграмма, общая длина которой превышает 576 байт (включая все заголовки IP), будет разрешена через сеть, поэтому вы должны разделить свои сообщения или предпринять шаги, чтобы определить, когда большие дейтаграммы дают сбой.Невозможно узнать, сколько дейтаграмм может обрабатывать сеть за один раз, поэтому вы должны отрегулировать, как быстро вы отправляете сообщения, и знать, когда нужно замедлить работу.там больше конкурирующего трафика, более медленные ссылки и меньший допуск для больших дейтаграмм.Таким образом, вещи, которые вы обычно можете избежать в локальной сети, приведут к большему количеству ошибок в глобальной сети.

Так что подумайте, действительно ли UDP является правильным протоколом для использования.

0 голосов
/ 11 февраля 2012

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

...