udp的程式設計模型
udp是user datagram protocol的縮寫,直譯為使用者資料報協議。
剛好與tcp相反,tcp可以根據網路狀態的好壞以自己為單位調節分組的大小,udp是一種面向無連線的不可靠傳輸層協議,而且udp每次傳送的分組資料大小都是固定的。
為什麼udp是不可靠傳輸?
(1)不建立連線。
(2)沒有應答機制。
(3)不會根據網路的好壞調整分組資料的大小。
其實有關udp為什麼是不可靠傳輸協議,我們在說明tcp時就說的很清楚了,之所以不是可靠傳輸協議,主要還是因為udp沒有連線和應答機制,導致udp在傳送資料時,根本不清楚通訊線路的連通狀態,所以udp傳輸資料時,無法保證資料一定能傳送給對方,因此udp是不可靠傳輸協議,或者說是不可靠通訊。
tcp通訊必須建立連線,tcp建立連線時,伺服器和客戶端的tcp協議會自動記錄下對方的ip和埠,後續呼叫recv、send來正式通訊時,應用程式不再需要指定對方的ip和埠,因為會自動使用tcp記錄對方的ip和埠。
對於udp通訊來說,udp協議沒有建立連線的特性,所以udp協議沒有自動記錄對方ip和埠的特點,因此每次傳送資料時,應用程式必須親自指定對方的ip和埠,只有這樣才能將資料傳送給對方。
如果是跨網通訊的話,指定的ip就是對方的公網ip。
什麼時候使用udp呢?**說明:
學習tcp通訊時我們說過,tcp協議要求必須要有乙個伺服器,這一點是由tcp協議本身的特性所決定的。
tcp通訊伺服器端呼叫socket函式返回的套接字檔案描述符用於監聽。
但是通過udp的程式設計模型可以看出,udp通訊雙方要做的事情一摸一樣的,所以對於udp通訊的雙方來說,不需要區分誰是伺服器端、誰是客戶端也不需要監聽對方連線,因為不存在建立連線也不存在斷開連線,通訊雙方的身份完全是對等的,所以udp通訊也被稱為對等通訊,或者叫「點對點」通訊。
udp通訊呼叫socket應用程式呼叫socket函式返回的套接字檔案描述符直接用於通訊。
對於udp通訊來說,如果要接收資料那麼就必須使用bind函式繫結固定的ip和埠。如果只是用於傳送資料則不需要繫結。
同樣的,udp這種對等通訊的特點,或者說點對點通訊的特點,是由udp協議本身的特性所決定的,與應用程式沒有關係。
對於udp來說通訊雙方所實現的步驟是一模一樣的,沒有伺服器和客戶端的區分。
UDP協議與UDP通訊
1 udp協議 udp是無連線通訊協議,即在資料傳輸時,資料的傳送端和接收端不建立邏輯連線。簡單來說,當一台計算機向另外一台計算機傳送資料時,傳送端不會確認接收端是否存在,就會發出資料,同樣接收端在收到資料時,也不會向傳送端反饋是否收到資料。但是在使用udp協議傳送資料時,由於udp的面向無連線性,...
UDP通訊基礎
udp通訊 接收 1.int sock socket af inet,sock dgram,0 af是address family位址家族,有ipv4 ipv6。type是udp。protocol是0,讓系統自動 選擇。socket成功返回0 2.int i bind sock,sockaddr s...
udp簡單通訊
客戶端 include include include include include define serv port 8000 int main int argc,char ar close sockfd return 0 如何實現內網和外網的通訊 main.c udpserver create...