Замена перфорированного отверстия / сокета 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
пакеты.