Все, что происходит, когда вы помещаете приложение в фоновый режим, а затем отпускаете его приостановленным, заключается в том, что оно перестает планировать ядро.Он не сразу разрывает какие-либо соединения и не разрушает любые сокеты (если вы не принудительно).
В вашем случае UDP ядро получает пакет и помещает его в буфер ядра, ожидая, пока ваше приложениеполучить это.Поскольку процесс вашего приложения существует, но фактически остановлен, данные будут просто храниться в буфере ядра.Если вы получите слишком много данных, он переполнит буфер ядра и будет удален.В противном случае ваше приложение может получить его, когда (если) оно запланировано снова.
В случае с TCP в значительной степени происходит то же самое.
Но (большой, но): ОС всегда имеетвозможность срывать сокеты для приостановленных приложений, если это необходимо, на основании нехватки памяти и т. д. Поэтому, хотя это не обязательно будет делать это безвозмездно, оно может сделать это.
Я не совсем уверен, почему выВы видите, что соединение TCP разорвано быстро.Может случиться так, что эвристика ядра для сервера соединений TCP более агрессивна, чем для сокетов UDP, поскольку соединения TCP требуют большего количества состояний и более непрерывной обработки, чем сокеты UDP.
См. Техническое примечание TN2277 Сеть и многозадачность .