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

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

移動(dòng)開發(fā)培訓(xùn),Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),手機(jī)維修培訓(xùn),手機(jī)軟件培訓(xùn)

UDP編程模型

  在UDP套接字中,有2個(gè)函數(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個(gè)參數(shù)和read/write的前3個(gè)參數(shù)一樣。flags表示設(shè)置的標(biāo)志值,簡單的UDP程序可以直接設(shè)置為0,最后兩個(gè)參數(shù)表示服務(wù)端地址(對于sendto來說)或者是對端地址(對于recvfrom來說)。如果不關(guān)心對端的地址,則設(shè)置為NULL,此時(shí)addrlen也可以設(shè)置為NULL了。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式