Linux學習——UDP

編程的整體框架

bind:綁定服務器:TCP地址和端口號
receivefrom():阻塞等待客戶端數據
sendto():指定服務器的IP地址和端口號,要發送的數據
????????無連接盡力傳輸,UDP:是不可靠傳輸
????????實時的音視頻傳輸,DNS域名解析包

服務端編寫

step1:socket

int socket(int domain,int type,int protocol);
參數domainAF_INETAF_INET6AF_UNIX,AF_LOCALAF_NETLINKAF_PACKET
typeSOCK_STREAM: 流式套接字,唯一對應于TCPSOCK_DGRAM:數據報套接字,唯一對應著UDPSOCK_RAW:原始套接字
protocol一般填0,原始套接字編程時需填充
返回值成功返回文件描述符出錯返回-1

step2:addr

int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);

sockfd
通過socket()創建的套接字文件描述符,例如int sockfd = socket(AF_INET, SOCK_STREAM, 0);2level
選項的協議層級,常見值:
SOL_SOCKET:通用套接字層級(如SO_REUSEADDR)
IPPROTO_TCP:TCP協議層級(如TCP_NODELAY)
IPPROTO_IP:IP協議層級(如IP_TTL)optname
具體選項名稱,常用選項:
SO_REUSEADDR:允許地址復用(解決bind時的Address already in use問題)
SO_RCVTIMEO:設置接收超時時間
SO_SNDBUF:調整發送緩沖區大小optval
選項值的指針,類型根據選項不同而變化:
布爾值:int reuse = 1;
時間結構:struct timeval timeout = {5, 0};(5秒超時)
緩沖區大小:int buf_size = 8192;optlen
選項值的字節長度,例如sizeof(reuse)

step3:bind,錯誤返回-1

定義結構體

清空結構體

填充

調用bind函數

sockaddr_in創建的是網絡字節序

主機字節序到網絡字節序
u_long htonl(u_long hostlong);
u_short htons(u_short short);

step4:while中revcform

  • sockfd:需要讀取的套接字描述符。
  • buf:數據讀取到的緩沖區的指針。
  • len:buf的最大長度。
  • flags:一組影響函數行為的標志位。
  • src_addr:一個指向源地址結構的指針。
  • addrlen:一個指向源地址結構長度的指針。

成功時返回接收的字節數,失敗時返回-1

失敗返回-1

需要將獲取的網絡字節序轉換成字符串

將32位網絡字節序二進制地址轉換成點分十進制的字符串
inet_pton()int inet_pton(int af, const char* src ,void* dst)將IPV4/IPV6 的地址轉換成binary格式使用于IPV4/IPV6能正確處理255.255.255.255的轉換問題參數:1.地址協議族(AF_INET或AF_INET6)2.src:是一個指針(填寫分點形式的IP地址(主要指IPV4))dst:轉換的結果給到dst

我們是接收,用的是下面的

inet_ntop(int af,const void *src,char *dst,socklen_t size)
? ? 把ipv4和ipv6的網絡字節序變成本地的字符串形式的IP地址
參數
? ? 1.af:地址協議族(AF_INET或AF_INET6)
? ? 2.src:是一個指針(32),(結構體里內容)
? ? 3.dst:輸出結果為32位點分形式的IP地址
? ? 4.size:長度

成功返回非零

客戶端編寫

客戶端是需要傳參進去的,main就需要帶參數

進行判斷傳參格式是否正確

使用socket函數,判斷是都成功

成功之后將鍵盤輸入的端口好轉型為int給到定義的port

之后編寫結構體(bind函數那部分內容)

while循環鍵盤輸入內容

下面是sendto()函數知識點

頭文件:#include < sys/types.h >
頭文件:#include < sys/socket.h >int sendto ( socket s , const void * msg, int len, unsigned int flags,const struct sockaddr * addr , int tolen ) ;函數說明:sendto() 用來將數據由指定的socket傳給對方主機。參數說明:s:已建好連接的socket,如果利用UDP協議則不需經過connect操作。msg:待發送數據的緩沖區len:緩沖區長度flags:調用方式標志位, 一般為0, 改變flags,將會改變sendto發送的形式。addr:(可選)指針,指向目的套接字的地址tolen:addr所指地址的長度返回值:如果成功,則返回發送的字節數失敗則返回SOCKET_ERROR。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/77892.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/77892.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/77892.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ReAct Agent 實戰:基于DeepSeek從0到1實現大模型Agent的探索模式

寫在前面:動態思考,邊想邊做 大型語言模型(LLM)的崛起開啟了通用人工智能(AGI)的無限遐想。但要讓 LLM 從一個被動的“文本生成器”轉變為能夠主動解決問題、與環境交互的智能體(Agent),我們需要賦予它思考、行動和學習的能力。ReAct (Reason + Act) 框架正是實現這一…

從物理到預測:數據驅動的深度學習的結構化探索及AI推理

在當今科學探索的時代&#xff0c;理解的前沿不再僅僅存在于我們書寫的方程式中&#xff0c;也存在于我們收集的數據和構建的模型中。在物理學和機器學習的交匯處&#xff0c;一個快速發展的領域正在興起&#xff0c;它不僅觀察宇宙&#xff0c;更是在學習宇宙。 AI推理 我們…

結合地理數據處理

CSV 文件不僅可以存儲表格數據&#xff0c;還可以與地理空間數據結合&#xff0c;實現更強大的地理處理功能。例如&#xff0c;你可以將 CSV 文件中的坐標數據轉換為點要素類&#xff0c;然后進行空間分析。 示例&#xff1a;將 CSV 文件中的坐標數據轉換為點要素類 假設我們有…

SpringBoot中6種自定義starter開發方法

在SpringBoot生態中,starter是一種特殊的依賴,它能夠自動裝配相關組件,簡化項目配置。 自定義starter的核心價值在于: ? 封裝復雜的配置邏輯,實現開箱即用 ? 統一技術組件的使用規范,避免"輪子"泛濫 ? 提高開發效率,減少重復代碼 方法一:基礎配置類方式 …

滾珠導軌松動會導致哪些影響?

直線導軌用于高精度或快速直線往復運動場所&#xff0c;且能夠擔負一定的扭矩&#xff0c;在高負載的情況下實現高精度的直線運動。它主要由導軌和滑塊組成&#xff0c;其中導軌作為固定元件&#xff0c;滑塊則在其上進行往復直線運動。但是滾珠導軌松動會導致哪些影響&#xf…

從零開始搭建Django博客②--Django的服務器內容搭建

本文主要在Ubuntu環境上搭建&#xff0c;為便于研究理解&#xff0c;采用SSH連接在虛擬機里的ubuntu-24.04.2-desktop系統搭建&#xff0c;當涉及一些文件操作部分便于通過桌面化進行理解&#xff0c;通過Nginx代理綁定域名&#xff0c;對外發布。 此為從零開始搭建Django博客…

ZLMediaKit支持JT1078實時音視頻

ZLMediaKit 對 JT1078 實時音視頻協議的支持主要通過其擴展版本或與其他中間件結合實現。以下是基于搜索結果的綜合分析&#xff1a; 一、ZLMediaKit 原生支持能力 開源版本的基礎支持 ZLMediaKit 開源版本本身未直接集成 JT1078 協議解析模塊&#xff0c;但可通過 RTP 推流功能…

Java隊列(Queue)核心操作與最佳實踐:深入解析與面試指南

文章目錄 概述一、Java隊列核心實現類對比1. LinkedList2. ArrayDeque3. PriorityQueue 二、核心操作API與時間復雜度三、經典使用場景與最佳實踐場景1&#xff1a;BFS層序遍歷&#xff08;樹/圖&#xff09;場景2&#xff1a;滑動窗口最大值&#xff08;單調隊列&#xff09; …

MetaGPT智能體框架深度解析:記憶模塊設計與應用實踐

在AI智能體技術從單點突破邁向系統工程的關鍵階段&#xff0c;MetaGPT憑借其創新的記憶架構重新定義了多智能體協作范式。本文深度解構其革命性的三級記憶系統&#xff0c;揭秘支撐10倍效能提升的知識蒸餾算法與動態上下文控制策略&#xff0c;通過企業級應用案例與性能基準測試…

集結號海螺捕魚服務器調度與房間分配機制詳解:六

本篇圍繞服務器調度核心邏輯進行剖析&#xff0c;重點講解用戶連接過程、房間分配機制、服務端并發策略及常見性能瓶頸優化。適用于具備中高級 C 后端開發經驗的讀者&#xff0c;覆蓋網絡會話池、邏輯服調度器與房間生命周期管理等關鍵模塊。 一、服務器結構概覽 整體系統采用…

【電子通識】熱敏打印機是怎么形成(打印)圖像和文字的?

在我們身邊&#xff0c;熱敏打印方式常見用于裝飾貼紙、便利店的小票。此外&#xff0c;物流及食品條碼標簽、身份證件、機票?火車票、X光片、食品日期印刷等&#xff0c;很多打印都用到了熱敏打印頭。 熱敏打印頭的蓄熱層(涂釉層)上分布著一排加熱元件&#xff08;發熱線&…

SQL注入漏洞中會使用到的函數

目錄 一、信息獲取函數 1. 通用函數 2. 元數據查詢&#xff08;INFORMATION_SCHEMA&#xff09; 二、字符串操作函數 1. 字符串連接 2. 字符串截取 3. 編碼/解碼 三、報錯注入專用函數 1. MySQL 2. SQL Server 3. PostgreSQL 四、時間盲注函數 1. 通用延遲 2. 計…

車載信息安全架構 --- 汽車網絡安全

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 周末洗了一個澡,換了一身衣服,出了門卻不知道去哪兒,不知道去找誰,漫無目的走著,大概這就是成年人最深的孤獨吧! 舊人不知我近況,新人不知我過…

Linux423 刪除用戶

查找 上面已查過&#xff1a;無法使用sudo 新開個終端試試 之前開了一個終端&#xff0c;按照deepseek排查 計劃再開一個進程 開一個終端 后強制刪除時顯示&#xff1a;此事將被報告

《從卷積核到數字解碼:CNN 手寫數字識別實戰解析》

文章目錄 一、手寫數字識別的本質與挑戰二、使用步驟1.導入torch庫以及與視覺相關的torchvision庫2.下載datasets自帶的手寫數字的數據集到本地 三、完整代碼展示 一、手寫數字識別的本質與挑戰 手寫數字識別的核心是&#xff1a;從二維像素矩陣中提取具有判別性的特征&#x…

UniOcc:自動駕駛占用預測和預報的統一基準

25年3月來自 UC Riverside、U Wisconsin 和 TAMU 的論文"UniOcc: A Unified Benchmark for Occupancy Forecasting and Prediction in Autonomous Driving"。 UniOcc 是一個全面統一的占用預測基準&#xff08;即基于歷史信息預測未來占用&#xff09;和基于攝像頭圖…

模型量化核心技術解析:從算法原理到工業級實踐

一、模型量化為何成為大模型落地剛需&#xff1f; 算力困境&#xff1a;175B參數模型FP32推理需0.5TB內存&#xff0c;超出主流顯卡容量 速度瓶頸&#xff1a;FP16推理延遲難以滿足實時對話需求&#xff08;如客服場景<200ms&#xff09; 能效挑戰&#xff1a;邊緣設備運行…

AD9253鏈路訓練

傳統方式 參考Xilinx官方文檔xapp524。對于AD9253器件 - 125M采樣率 - DDR模式&#xff0c;ADC器件的DCO采樣時鐘(500M Hz)和FCO幀時鐘是中心對齊的&#xff0c;適合直接采樣。但是DCO時鐘不能直接被FPGA內部邏輯使用&#xff0c;需要經過BUFIO和BUFR緩沖后&#xff0c;得到s_b…

解決方案:遠程shell連不上Ubuntu服務器

服務器是可以通過VNC登錄&#xff0c;排除了是服務器本身故障 檢查服務是否在全網卡監聽 sudo ss -tlnp | grep sshd確保有一行類似 LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid...,fd3))返回無結果&#xff0c;表明系統里并沒有任…

關于大數據的基礎知識(四)——大數據的意義與趨勢

成長路上不孤單&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///計算機愛好者&#x1f60a;///持續分享所學&#x1f60a;///如有需要歡迎收藏轉發///&#x1f60a;】 今日分享關于大數據的基礎知識&#xff08;四&a…