Где дейтаграммы, если клиент не слушает порт UDP? - PullRequest
0 голосов
/ 22 февраля 2010

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

Я задаю этот вопрос, потому что хочу знать, что если клиент отправит 1000 дейтаграмм (1К каждая) на ПК через Интернет, эти 1000 дейтаграмм будут проходить через Интернет (используя полосу пропускания), даже если никто не слушает эти данные?

Если ответ Да, как я должен остановить это? Я имею в виду, что если сервер перестает функционировать, как мне использовать UDP, чтобы узнать этот факт и прекратить дальнейшую отправку?

Спасибо

Ответы [ 3 ]

1 голос
/ 22 февраля 2010

Я задаю этот вопрос, потому что хочу знать, что если клиент отправит 1000 дейтаграмм (1К каждая) на ПК через Интернет, эти 1000 дейтаграмм будут проходить через Интернет (используя полосу пропускания), даже если никто не слушает эти данные?

Да

Если ответ Да, как я должен остановить это? Я имею в виду, что если сервер перестает функционировать, как мне использовать UDP, чтобы узнать этот факт и прекратить дальнейшую отправку?

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

0 голосов
/ 22 февраля 2010

Наименьшим решением по накладным расходам была бы функция типа keep-alive, как предложил jdupont. Вы также можете перейти на использование tcp, который предоставляет вам эту возможность.

0 голосов
/ 22 февраля 2010

UDP сам по себе не предоставляет средств для определения, было ли сообщение успешно получено клиентом или нет. Вам нужен TCP для установления надежного соединения и после того, как он отправляет данные по UDP.

...