Замена перфорированного отверстия / сокета STUN UDP на сокет TCP во время выполнения

У меня возникла ситуация, когда я использовал STUN для установления соединения UDP [RTP] между двумя клиентами, чтобы они могли передавать мультимедиа друг с другом с некоторой потерей пакета. Теперь они закончили потоковую передачу мультимедиа, и один клиент хотел бы отправить другому клиенту большой файл. Вместо того, чтобы использовать UDP [RTP] для отправки большого файла, мне, как программисту, было бы удобнее отправлять файл с TCP, потому что TCP заботится о повторной отправке потерянных пакетов от моего имени. Могу ли я просто сказать клиентским приложениям прекратить использование своих соединений UDP (скажем, с помощью "socket.close(); socket = null;") и немедленно открыть новые соединения TCP на том же порту / адресе, что и соединения UDP? Будет ли это работать или будет заблокировано трехстороннее рукопожатие? Есть ли проблема времени или безопасности? В каких случаях будет работать замена перфорированного UDP на TCP и в каких случаях он не будет работать?

1 ответ

TCP а также UDP порты разные. TCP сокет на порту 1000, это совершенно другая конечная точка связи от UDP сокет на порту 1000. Таким образом, ваше приложение может просто охватить новый поток, установить новый TCP подключение и передача нужного файла. UDP соединение может продолжить обмен RTP пакеты.

Другие вопросы по тегам