使用UDP如何進行網路通訊

風是甜的你是我的發表於2018-06-20

UDP是一種面向無連線的通訊協議,何為面向無連線?即兩方通訊時,另一方可以不線上,但是一方卻可以傳送訊息,期間訊息段可能會丟失,但是因為是面向無連線,所以不保證訊息一定能送達。

UDP是面向資料包的。但是在通訊時,無法保證對方機器和我們的機器的位元組序埠什麼的都一樣,比如有的機器是大端,有的機器是小端,那麼報文傳輸到對方的機器時就會變成混亂的無序的。由於該項問題的產生,所以在網路中對報文進行了規定。

先發出的是低地址,後發出的是高地址,也就是說在網路中採用的是大端位元組序。那麼在有些小端機器上收到資料之後,要進行轉換。在linux的#include<arpa/inet.h>中,定義了轉換的函式。

  htonl(unit32_t hostlong)
htons(unit16_t hostshort)
ntohl(unit32_t hostlong)
ntohs(unit16_t hostshort)

hton-----表示從主機位元組序轉為網路位元組序
ntoh-----表示從網路位元組序轉為主機位元組序
l---表示32位長整數 s ----表示16位長整數

網路中定義了一個結構體sockaddr,為了接收任意型別,這個結構體其中一個引數就是地址型別。

 

使用其介面我們可以寫出基於UDP的伺服器和客戶端簡單的通訊程式。

標頭檔案:

服務端:

客戶端:

 

執行結果:

 

 

相關文章