自學嵌入式第三十四天:網絡編程-TCP

一、UDP用戶數據報

? ? ? ? 收發次數要對應;

? ? ? ? 數據與數據之間有邊界,多次調用收發時都是不同的數據報;

? ? ? ? 接收方的數據大小>=發送方的數據大小,如果接受方數據小了則會丟棄未讀的部分,再次調用只會讀下一包數據;

二、服務器/客戶端模型

? ? ? ? 1.c/s client/server

? ? ? ? 服務器客戶端模型:

? ? ? ? 客戶端是專用的;

? ? ? ? 可以使用http等標準協議,也可以使用自定義協議;

? ? ? ? 資源大部分都在cli里,只有必要的交互數據由客戶端發;

? ? ? ? 受到的限制較小,功能相對復雜;

? ? ? ? 2.b/s browser/server

? ? ? ? 瀏覽器客戶端模型:

? ? ? ? 客戶端是通用的;

? ? ? ? 用的是http;

? ? ? ? 都是客戶端發給服務器;

? ? ? ? 在傳輸數據過程中受到http的限制,功能不復雜;

? ? ? ? 3.p2p peer to peer

? ? ? ? 一般是用于直播;

? ? ? ? 服務器給傳輸數據,其他進度快的客戶端也給傳輸數據,如果本客戶端進度快也會傳輸數據給其他客戶端;

三、TCP傳輸控制協議

? ? ? ? 1.流式套接字,數據是連續的,有順序的;

????????可靠傳輸方式,有鏈路,有應答機制,如果發送沒應答將自動重傳;

? ? ? ? 全雙工通信,同一時刻既可以收又可以發,可以同時進行;

? ? ? ? 雙緩沖區,收發互不影響;

? ? ? ? 2.三次握手:

????????建立連接:

? ? ? ? 客戶端發送連接請求SYN;

? ? ? ? 服務端發送連接請求SYN和ACK;

? ? ? ? 客戶端應答ACK建立連接;

? ? ? ? 3.四次揮手

? ? ? ? 斷開連接:

? ? ? ? 客戶端發送斷開請求FIN和ACK;

? ? ? ? 服務器應答ACK;

? ? ? ? 服務區發送斷開請求FIN和ACK;

? ? ? ? 客戶端應答ACK;

? ? ? ? 4.緩沖區大小64k,寫得太快會寫阻塞;

? ? ? ? 5.socket

? ? ? ? #include <sys/types.h> ? ? ? ? ?/* See NOTES */

? ? ? ? #include <sys/socket.h>

? ? ? ? int socket(int domain, int type, int protocol);

? ? ? ? type:SOCK_STREAM-流式套接字;

? ? ? ? 6.地址127.0.0.1代表自己,但只能自己通自己;

? ? ? ? INADDR_ANY表示全監聽,接收所有信息,可以被別人找到;

? ? ? ? 7.listen

? ? ? ? 把服務器調成可被鏈接的狀態(監聽狀態);? ? ? ?

? ? ? ?#include <sys/types.h> ? ? ? ? ?/* See NOTES */

? ? ? ?#include <sys/socket.h>

? ? ? ?int listen(int sockfd, int backlog);

? ? ? ? backlog:同一時刻可以連接的最大個數,第backlog+1個直接被拒絕;

? ? ? ? 8.accept

? ? ? ? 阻塞直到有客戶端連接;

????????#include <sys/types.h> ? ? ? ? ?/* See NOTES */

????????#include <sys/socket.h>

? ? ? ? int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

? ? ? ? 9.recv

????????#include <sys/types.h>

????????#include <sys/socket.h>

? ? ? ? ssize_t recv(int sockfd, void *buf, size_t len, int flags);

? ? ? ? 10.send

????????#include <sys/types.h>

????????#include <sys/socket.h>

????????ssize_t send(int sockfd, const void *buf, size_t len, int flags);

? ? ? ? 11.connect

? ? ? ? 客戶端發出連接請求;

? ? ? ? #include <sys/types.h> ? ? ? ? ?/* See NOTES */

? ? ? ? #include <sys/socket.h>

? ? ? ? int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);

? ? ? ? 12.tcp中通過套接字找到地址

????????#include <sys/socket.h>

? ? ? ? int getpeername(int socket,struct sockaddr* addr,socklen_t ?*addrlen)

? ? ? ? 13.數據的粘包????????

? ? ? ? 發送方發啊送你數據,接收方無法解析數據。

? ? ? ? 解決:設置邊界(eg:\0);固定大小;自定義協議;

四、TCP和UDP的差別

? ? ? ? 1.UDP無連接,需要寫標識退出;

? ? ? ? TCP有鏈接,(三次握手四次揮手)整個通信過程都會保持連接;

? ? ? ? 2.UDP不可靠,數據有丟包風險;

? ? ? ? TCP可靠,數據之間沒有邊界;

? ? ? ? 3.UDP數據報,發送次數和接收次數需要對應,數據與數據之間有邊界;

? ? ? ? TCP流式套接字,次數不必對應;

? ? ? ? 4.UDP沒有擁塞控制;

? ? ? ? TCP超時重傳;

? ? ? ? 5.廣播、組播只能用UDP;

? ? ? ? 6.首部開銷小;

? ? ? ? 7.TCP是全雙工通信,有雙緩沖區,而UDP只有一個緩沖區,某時刻要么收要么發;

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

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

相關文章

Apache IoTDB:國產時序數據庫的崛起與工業物聯網的未來

&#x1f4d1;前言 在工業物聯網的浪潮中&#xff0c;數據不再是副產品&#xff0c;而是驅動決策的核心資產。"隨著物聯網、工業互聯網和智能監控的迅猛發展&#xff0c;時序數據正以前所未有的速度爆發。據預測&#xff0c;到2025年全球物聯網設備將達750億臺&#xff0c…

一鍵核驗,安全無憂!手機號三要素詳情版API,為您的業務筑牢身份認證防線

一、什么是手機號三要素核驗API&#xff1f; 手機號三要素核驗API 是一種通過編程接口&#xff0c;實時驗證一條個人身份信息是否與該國運營商登記的實名信息一致的在線服務。 這里的“三要素”特指&#xff1a; 姓名 身份證號碼 手機號碼 核驗過程&#xff1a;用戶提交上述三個…

輕松上手 qData 數據中臺開源版:Docker Compose 助你10分鐘跑起來

說在前面 誰適合看這份指南&#xff1f; 初次接觸 qData&#xff0c;希望快速體驗功能的小伙伴不想折騰復雜環境配置和前端打包的人想用“一鍵啟動”省事體驗完整平臺的用戶 我們已經為你準備好“開箱即用”的完整部署包&#xff0c;包括&#xff1a; ? 前端靜態資源&…

Qt讀寫Excel--QXlsx基本使用

1、概述 Document 類是一個用于操作 XLSX 文件的類&#xff0c;繼承自 QObject。它提供了對 Excel 文件的讀寫操作&#xff0c;包括單元格的讀寫、圖片和圖表的插入、單元格合并、列和行的格式化、數據驗證和條件格式化等功能。此外&#xff0c;它還支持對工作簿和工作表的操作…

P13929 [藍橋杯 2022 省 Java B] 山 題解

縮減一下題目的意思&#xff0c;問區間 [2022,2022222022] 有多少個數是回文數并且先單調不減&#xff0c;后單調不增。 因為有這兩條條件&#xff0c;我們可以得知在判斷時只用判斷前半段的每個數是不是和對面相應的位置相等&#xff0c;以及是否單調不減。 為什么不用看后半段…

Unity Android 文件的讀寫

配置AndroidManifest 文件在Assets 目錄下查找AndroidManifest 文件&#xff0c;添加權限聲明&#xff0c;在application 節點中添加requestLegacyExternalStorage 屬性。<!-- 權限聲明 --> <uses-permission android:name"android.permission.READ_EXTERNAL_STO…

Pydantic模型驗證測試:你的API數據真的安全嗎?

url: /posts/03b2afdf35f55dbaef631710ab6da82c/ title: Pydantic模型驗證測試:你的API數據真的安全嗎? date: 2025-09-03T23:46:18+08:00 lastmod: 2025-09-03T23:46:18+08:00 author: cmdragon summary: Pydantic在FastAPI中用于數據驗證和序列化,通過Python類型注解自動…

【Proteus仿真】AT89C51單片機中斷系列仿真——INT0中斷控制LED小燈/INT0和INT1中斷控制數碼管

目錄 0案例視頻效果展示 0.1例子1&#xff1a;INT0控制LED閃爍 0.2例子2&#xff1a;INT0中斷控制數碼管計數 0.3例子3&#xff1a;INT0中斷實現秒表功能 0.4例子4&#xff1a;INT0INT1中斷控制數碼管計數 1基礎知識補充——中斷系統 1.1 中斷源一覽 1.2 控制寄存器 1…

MTK Linux DRM分析(三十三)- MTK mtk_mipi_tx.c

一、MIPI PHY驅動簡介 1. MIPI 協議分層 應用層:顯示(DSI)、攝像頭(CSI)。 協議層:定義像素/圖像幀如何封裝成數據包。 物理層(PHY):具體電氣信號傳輸方式 —— 這里就是 D-PHY 或 C-PHY。 2. D-PHY(Differential PHY) 傳輸方式:差分信號(類似 LVDS/USB/PCIe …

G2D 圖形加速器

文章目錄G2D 圖形加速器1. 功能簡介1.1 矩形填充1.2 旋轉和鏡像 (rotate and mirror)1.3 透明度混合1.4 colorkey1.5 縮放 (Stretchblt)2. G2D 框架3. 全志 G2D 使用示例3.1 使用G2D實現圖像旋轉縮放3.2 實時預覽中加入旋轉縮放功能G2D 圖形加速器 G2D模塊主要實現圖像旋轉、數…

【FPGA】單總線——DS18B20

目錄 項目&#xff1a;項目&#xff08;含quartus工程、仿真文件&#xff09; 1. 單總線通信時序詳解 1.1 初始化&#xff08;復位脈沖 存在脈沖&#xff09; 1.2 寫時隙&#xff08;寫“0”和寫“1”&#xff09; 1.3 讀時隙 2. DS18B20 暫存器與溫度數據格式 2.1 暫存…

JUC的安全并發包機制

目錄 1. Lock機制&#xff1a;明鎖控制 2. 柵欄機制(CyclicBarrier) 3. 閉鎖機制(CountDownLatch) 4. 信號量機制(Semaphore) 5. 無鎖機制 1. Lock機制&#xff1a;明鎖控制 Lock接口提供了比synchronized更靈活的鎖機制&#xff0c;屬于明鎖&#xff08;需要手動獲取和釋…

開源企業級快速開發平臺(JeecgBoot)

JeecgBoot 是一款基于 Spring Boot Vue 技術棧的開源企業級快速開發平臺&#xff0c;旨在通過「低代碼代碼生成」模式降低企業級應用的開發成本&#xff0c;提升開發效率。其核心定位是“開箱即用的中后臺解決方案”&#xff0c;覆蓋權限管理、表單報表、工作流、代碼生成等核…

探索 PostgreSQL 和 MySQL 之間的主要差異和相似之處,找到滿足您項目需求的最佳數據庫解決方案。

探索 PostgreSQL 和 MySQL 之間的主要差異和相似之處&#xff0c;找到滿足您項目需求的最佳數據庫解決方案。 探索 PostgreSQL 和 MySQL 之間的主要差異和相似之處&#xff0c;找到滿足您項目需求的最佳數據庫解決方案。 關系數據庫已經存在了很長時間。事實上&#xff0c;關系…

如何畫時序圖、流程圖、狀態流轉圖

如何畫時序圖、流程圖、狀態流轉圖流程圖符號約定時序圖元素交互框最佳實踐狀態流轉圖在研發或者寫技術方案的時候&#xff0c;我們經常會畫各種圖。圖比文字更加容易理解一些&#xff0c;那么如何畫出優秀好看的圖呢下面簡單介紹一些畫圖時需要注意的點 流程圖 流程圖是流程…

CSDN 與 掘金 高效學習指南

CSDN 和掘金&#xff08;juejin.cn&#xff09;是國內最活躍的技術社區&#xff0c;但信息量巨大、質量參差不齊。高效運用的關鍵是&#xff1a;從“被動瀏覽”轉向“主動獲取”&#xff0c;避免陷入“收藏一堆文章卻學不會”的陷阱。 以下是為你量身定制的CSDN 與 掘金 高效學…

容器tomcat鏡像制作

pull-tomcat鏡像 docker pull tomcat啟動 –security-opt 禁用默認的安全策略&#xff0c;放寬限制 docker run -d --name mysql-tomcat -p 8080:8080 --security-opt seccompunconfined tomcat:latest進入容器直接訪問404&#xff0c;網頁相關的webapps下面為空&#xff0c;將…

AC安全認證方式全解析

AC的幾種安全認證方法認證方式 安全性 便捷性 典型應用場景 所需配置Portal認證 ??中 高 訪客網絡、商場、 Portal服務 酒…

《壘球江西百科》男子壘球世界紀錄·壘球9號位

男子壘球世界紀錄終極盤點? | 冷知識科普&#xff01;1. 最遠本壘打距離 | Longest Home Run Distance紀錄保持者&#xff1a; Jeff Hall (美國)距離&#xff1a; 643英尺 (約196米)賽事&#xff1a; 2012年 USSSA 慢投壘球錦標賽? 科普&#xff1a; 慢投壘球中&#xff0c;球…

設計模式六大原則2-里氏替換原則

肯定有不少人跟我剛看到這項原則的時候一樣&#xff0c;對這個原則的名字充滿疑惑。其實原因就是這項原則最早是在1988年&#xff0c;由麻省理工學院的一位姓里的女士&#xff08;Barbara Liskov&#xff09;提出來的。定義1&#xff1a;如果對每一個類型為 T1的對象 o1&#x…