使用UDP如何進行網路通訊
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的伺服器和客戶端簡單的通訊程式。
標頭檔案:
服務端:
客戶端:
執行結果:
相關文章
- udp網路通訊UDP
- 網路通訊1:UDPUDP
- 28張圖解 | 網際網路究竟是「如何連線,如何進行通訊」的?圖解
- 如何進行網路抓取?
- Python - UDP通訊PythonUDP
- ACE中UDP通訊UDP
- UDP雙向通訊UDP
- Java網路程式設計UDP通訊原理Java程式設計UDP
- 網路通訊
- java實現UDP通訊JavaUDP
- UDP協議網路Socket程式設計(java實現C/S通訊案例)UDP協議程式設計Java
- iOS 如何進行網路測速iOS
- python UDP套接字通訊PythonUDP
- SwiftNIO初探-簡單UDP通訊SwiftUDP
- 通訊協議:HTTP、TCP、UDP協議HTTPTCPUDP
- Linux中的UDP通訊LinuxUDP
- C#使用命名管道通過網路在程式之間進行通訊C#
- java tcp 網路通訊--使用多執行緒傳輸檔案JavaTCP執行緒
- 網路通訊2:TCP通訊實現TCP
- 網路通訊3:TCP互動通訊TCP
- 網路通訊2:TCP簡單通訊TCP
- C# 通過socket實現UDP 通訊C#UDP
- dubbo網路通訊(四)
- 19作 網路通訊
- 網路通訊協議協議
- 網路通訊基礎
- 一文搞懂如何使用Node.js進行TCP網路通訊Node.jsTCP
- 樂訊通雲通訊:物聯網路卡適合哪些行業使用?行業
- USB共享網路:android手機通過USB與Ubuntu進行socket網路通訊AndroidUbuntu
- UDP網路測試UDP
- UE4 UDP是如何進行可靠傳輸的UDP
- 裝潢家居行業該如何進行網路推廣?行業
- docker系列(五):網路通訊Docker
- 網路通訊程式設計程式設計
- BZOJ3651 : 網路通訊
- Java網路通訊套接字Java
- 網路通訊5:執行HTTP的GET/POST請求HTTP
- Android與物聯網裝置通訊-UDP&TCP協議AndroidUDPTCP協議