udp雙向通信怎么辦?
首先,UDP和TCP均指通信協(xié)議,那么,既然代表通信協(xié)議,UDP和TCP都是建立一個(gè)“通道”就可以進(jìn)行服務(wù)端/客戶端間的數(shù)據(jù)收發(fā)。
它們的區(qū)別主要在于:
UDP協(xié)議是面向非連接(不可靠)的傳輸協(xié)議,也就是不需要與服務(wù)端建立連接,就直接將數(shù)據(jù)發(fā)送給服務(wù)端,同時(shí),無(wú)機(jī)制保證這條數(shù)據(jù)已成功發(fā)送給服務(wù)端。
TCP協(xié)議是面向連接(可靠)的傳輸協(xié)議,在客戶端向服務(wù)器端傳輸數(shù)據(jù)之前,客戶端必須與服務(wù)器端通過(guò)“三次握手”來(lái)完成連接的建立,在之后的數(shù)據(jù)傳輸過(guò)程中,為了可靠傳輸,接受方還會(huì)發(fā)送ACK包來(lái)使發(fā)送方獲知該數(shù)據(jù)包已經(jīng)成功發(fā)送,否則,發(fā)送端將重新發(fā)送數(shù)據(jù)包直至超時(shí)或發(fā)送成功。
因此,無(wú)論UDP協(xié)議還是TCP協(xié)議,均要有一個(gè)服務(wù)端先行監(jiān)聽(tīng)某端口才能服務(wù)。
例如:服務(wù)端監(jiān)聽(tīng)9090端口,客戶端使用3456(隨機(jī)分配)端口,與服務(wù)器建立連接,那么通道只有一條,即:A:9090 <-> B:3456。