使用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
- 一文搞懂如何使用Node.js進行TCP網路通訊Node.jsTCP
- USB共享網路:android手機通過USB與Ubuntu進行socket網路通訊AndroidUbuntu
- 28張圖解 | 網際網路究竟是「如何連線,如何進行通訊」的?圖解
- 如何進行網路抓取?
- 使用SuperSocket的FixedHeaderReceiveFilter進行通訊HeaderFilter
- bridge網路實現多個單主機進行通訊
- UDP雙向通訊UDP
- Java網路程式設計UDP通訊原理Java程式設計UDP
- 通過nginx進行udp報文負載均衡NginxUDP負載
- 使用JavaScript和網路資訊API進行自適應網路服務JavaScriptAPI
- C++使用libcurl進行http通訊C++HTTP
- 網路通訊
- java實現UDP通訊JavaUDP
- python UDP套接字通訊PythonUDP
- Netflix 如何使用eBPF流日誌進行網路洞察?eBPF
- UDP協議網路Socket程式設計(java實現C/S通訊案例)UDP協議程式設計Java
- C# 使用SuperSocket的FixedHeaderReceiveFilter進行通訊C#HeaderFilter
- 在 Laravel 中使用 Workerman 進行 socket 通訊Laravel
- 使用Google Protocol Bufffers進行通訊(Ruby & C)GoProtocol
- 使用retrofit進行網路請求
- 通過進攻心態進行有效的網路防禦
- 如何使用Java串列埠進行資料通訊及應用案例Java串列埠
- 如何使用卷積神經網路進行影像處理?卷積神經網路
- SwiftNIO初探-簡單UDP通訊SwiftUDP
- UDP網路測試UDP
- 通過串列埠進行通訊 :串列埠
- Android Socket連線,使用Socket進行通訊(Android)Android
- 使用 Linux 命令列與其他使用者進行通訊Linux命令列
- 網路通訊2:TCP通訊實現TCP
- 網路通訊3:TCP互動通訊TCP
- 網路通訊2:TCP簡單通訊TCP
- 樂訊通雲通訊:如何正確的使用物聯網路卡
- OSI七層模型如何幫助網路通訊?模型
- 網路通訊基礎
- 網路通訊協議協議
- 19作 網路通訊