UDP和TCP處于同一層網(wǎng)絡模型中,也就是運輸層,基于二者之上的應用有很多,常見的基于TCP的有HTTP、Telnet等,基于UDP有DNS、NFS、SNMP等。UDP是無連接,不可靠的數(shù)據(jù)協(xié)議服務,而TCP提供面向流、提供可靠數(shù)據(jù)服務。注意,UDP和TCP沒有好壞之分,只是二者的適用場景不同罷了。

  典型的UDP套接字編程模型是客戶端不予服務端建立連接,而只是調用sendto函數(shù)來向服務端發(fā)送數(shù)據(jù),其中必須要指定服務端的信息,包括IP和端口等;服務端不接收來自客戶端的連接,而只是調用recvfrom函數(shù),來等待某個客戶端的數(shù)據(jù)到達。

移動開發(fā)培訓,Android培訓,安卓培訓,手機開發(fā)培訓,手機維修培訓,手機軟件培訓

UDP編程模型

  在UDP套接字中,有2個函數(shù)最常用,也就是sendto和recvfrom,二者的聲明如下:

#include <sys/socket.h> ssize_t recvfrom(int sockfd, void *buff, size_t nbytes, int flags,                  struct sockaddr *from, socklen_t *addrlen); ssize_t sendto(int sockfd, void *buff, size_t nbytes, int flags,                const struct sockaddr *to, socklen_t addrlen);

  recvfrom和snedto的前3個參數(shù)和read/write的前3個參數(shù)一樣。flags表示設置的標志值,簡單的UDP程序可以直接設置為0,最后兩個參數(shù)表示服務端地址(對于sendto來說)或者是對端地址(對于recvfrom來說)。如果不關心對端的地址,則設置為NULL,此時addrlen也可以設置為NULL了。

網(wǎng)友評論