在运行时用TCP套接字替换打孔/ STUN UDP套接字

时间:2015-05-13 22:57:45

标签: java sockets networking udp stun

我有一种情况,我使用STUN在两个客户端之间建立UDP [RTP]连接,这样他们就可以相互流媒体,但会丢失一些数据包。现在,他们完成了流媒体,一个客户端希望向另一个客户端发送一个大文件。而不是使用UDP [RTP]发送大文件,我会发现作为程序员,使用TCP发送文件更方便,因为TCP负责代表我重新发送丢失的数据包。我可以告诉客户端应用程序停止使用它们的UDP连接(例如“socket.close(); socket = null;”)并立即在与UDP连接相同的端口/地址上打开新的TCP连接吗?这会起作用还是会阻止三方握手?是否涉及时间安全问题?在哪些情况下用TCP工作取代打孔的UDP,在哪种情况下它不起作用?

1 个答案:

答案 0 :(得分:1)

TCPUDP端口不同。端口1000处的TCP套接字是与端口1000处的UDP套接字完全不同的通信端点。因此,您的应用程序可以跨越新线程,建立新的TCP连接并传输所需的文件。 UDP连接可以继续交换RTP数据包。