91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Socket套接字的原理說明

嵌入式應(yīng)用開發(fā) ? 來源:嵌入式應(yīng)用開發(fā) ? 作者:嵌入式應(yīng)用開發(fā) ? 2022-06-18 19:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

應(yīng)用層通過傳輸層進(jìn)行數(shù)據(jù)通信時(shí),TCP和UDP會(huì)遇到同時(shí)為多個(gè)應(yīng)用程序進(jìn)程提供并發(fā)服務(wù)的問題。多個(gè)TCP連接或多個(gè)應(yīng)用程序進(jìn)程可能需要 通過同一個(gè)TCP協(xié)議端口傳輸數(shù)據(jù)。為了區(qū)別不同的應(yīng)用程序進(jìn)程和連接,許多計(jì)算機(jī)操作系統(tǒng)為應(yīng)用程序與TCP/IP協(xié)議交互提供了稱為套接字 (Socket)的接口,區(qū)分不同應(yīng)用程序進(jìn)程間的網(wǎng)絡(luò)通信和連接。

生成套接字主要有3個(gè)參數(shù):通信的目的IP地址、使用的傳輸層協(xié)議(TCP或UDP)和使用的端口號(hào)。Socket原意是“插座”。通過將這3個(gè)參數(shù)結(jié)合起來,與一個(gè)“插座”Socket綁定,應(yīng)用層就可以和傳輸 層通過套接字接口,區(qū)分來自不同應(yīng)用程序進(jìn)程或網(wǎng)絡(luò)連接的通信,實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)牟l(fā)服務(wù)。

Socket以看成在兩個(gè)程序進(jìn)行通訊連接中的一個(gè)端點(diǎn),一個(gè)程序?qū)⒁欢涡畔懭隨ocket中,該Socket將這段信息發(fā)送給另外一個(gè)Socket中,使這段信息能傳送到其他程序中。

pYYBAGKts-eAKn0ZAAD_l5ZPZxg590.png

Host A上的程序A將一段信息寫入Socket中,Socket的內(nèi)容被Host A的網(wǎng)絡(luò)管理軟件訪問,并將這段信息通過Host A的網(wǎng)絡(luò)接口卡發(fā)送到Host B,Host B的網(wǎng)絡(luò)接口卡接收到這段信息后,傳送給Host B的網(wǎng)絡(luò)管理軟件,網(wǎng)絡(luò)管理軟件將這段信息保存在Host B的Socket中,然后程序B才能在Socket中閱讀這段信息。

要通過互聯(lián)網(wǎng)進(jìn)行通信,至少需要一對(duì)套接字,一個(gè)運(yùn)行于客戶機(jī)端,稱之為ClientSocket,另一個(gè)運(yùn)行于服務(wù)器端,稱之為serverSocket。
根據(jù)連接啟動(dòng)的方式以及本地套接字要連接的目標(biāo),套接字之間的連接過程可以分為三個(gè)步驟:服務(wù)器監(jiān)聽,客戶端請(qǐng)求,連接確認(rèn)。
服務(wù)器監(jiān)聽:是服務(wù)器端套接字并不定位具體的客戶端套接字,而是處于等待連接的狀態(tài),實(shí)時(shí)監(jiān)控網(wǎng)絡(luò)狀態(tài)。

客戶端請(qǐng)求:是指由客戶端的套接字提出連接請(qǐng)求,要連接的目標(biāo)是服務(wù)器端的套接字。為此,客戶端的套接字必須首先描述它要連接的服務(wù)器的套接字,指出服務(wù)器端套接字的地址和端口號(hào),然后就向服務(wù)器端套接字提出連接請(qǐng)求。

連 接確認(rèn):是指當(dāng)服務(wù)器端套接字監(jiān)聽到或者說接收到客戶端套接字的連接請(qǐng)求,它就響應(yīng)客戶端套接字的請(qǐng)求,建立一個(gè)新的線程,把服務(wù)器端套接字的描述發(fā)給客 戶端,一旦客戶端確認(rèn)了此描述,連接就建立好了。而服務(wù)器端套接字繼續(xù)處于監(jiān)聽狀態(tài),繼續(xù)接收其他客戶端套接字的連接請(qǐng)求。

socket通信流程:

1、服務(wù)器根據(jù)地址類型(ipv4,ipv6)、socket類型、協(xié)議創(chuàng)建socket
2、服務(wù)器為socket綁定ip地址和端口號(hào)
3、服務(wù)器socket監(jiān)聽端口號(hào)請(qǐng)求,隨時(shí)準(zhǔn)備接收客戶端發(fā)來的連接,這時(shí)候服務(wù)器的socket并沒有被打開
4、客戶端創(chuàng)建socket
5、客戶端打開socket,根據(jù)服務(wù)器ip地址和端口號(hào)試圖連接服務(wù)器socket
6、服務(wù)器socket接收到客戶端socket請(qǐng)求,被動(dòng)打開,開始接收客戶端請(qǐng)求,直到客戶端返回連接信息。這時(shí)候socket進(jìn)入阻塞狀態(tài),所謂阻塞即accept()方法一直到客戶端返回連接信息后才返回,開始接收下一個(gè)客戶端諒解請(qǐng)求
7、客戶端連接成功,向服務(wù)器發(fā)送連接狀態(tài)信息
8、服務(wù)器accept方法返回,連接成功
9、客戶端向socket寫入信息
10、服務(wù)器讀取信息
11、客戶端關(guān)閉
12、服務(wù)器端關(guān)閉

審核編輯:符乾江

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1425

    瀏覽量

    83518
  • 套接字
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    2069
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    輕松掌握——LuatOS socket基礎(chǔ)知識(shí)和應(yīng)用開發(fā)

    對(duì)于剛接觸LuatOS開發(fā)的工程師而言,實(shí)現(xiàn)設(shè)備聯(lián)網(wǎng)往往是第一個(gè)重要目標(biāo),而Socket編程正是實(shí)現(xiàn)這一目標(biāo)的核心技術(shù)路徑。本文以循序漸進(jìn)的方式,帶領(lǐng)讀者從最基礎(chǔ)的Socket概念入手,逐步掌握在
    的頭像 發(fā)表于 01-28 20:07 ?178次閱讀
    輕松掌握——LuatOS  <b class='flag-5'>socket</b>基礎(chǔ)知識(shí)和應(yīng)用開發(fā)

    socket是什么

    Socket(套接)是計(jì)算機(jī)網(wǎng)絡(luò)中的一個(gè)概念,它指示了一個(gè)可以進(jìn)行網(wǎng)絡(luò)通信的軟件端點(diǎn)。通過使用Socket,計(jì)算機(jī)程序可以通過網(wǎng)絡(luò)進(jìn)行通信。Soc
    發(fā)表于 12-03 08:27

    rtthread v5.0.1 , at socket使用select函數(shù)不能監(jiān)控多個(gè)socket fd的問題,怎么解決?

    我最近使用at socket ,at device 組件創(chuàng)建tcpclient,使用select函數(shù)實(shí)現(xiàn),發(fā)現(xiàn)select只能監(jiān)控一個(gè)socket fd,監(jiān)控兩個(gè)socket fd就不能正常接收
    發(fā)表于 10-13 06:05

    ESP8266 socket通信,串口溢出怎么解決?

    1、硬件平臺(tái):原子精英板 stm32f103zet6+esp8266 開發(fā)板作為client,網(wǎng)絡(luò)調(diào)試助手模擬server 學(xué)習(xí)研究AT SOCKET有一段時(shí)間了,之前逛論壇提問解決了一些問題。遇到
    發(fā)表于 09-28 13:42

    alloc_socket在不斷創(chuàng)建socket時(shí)會(huì)不斷新建信號(hào)量和互斥鎖,導(dǎo)致內(nèi)存泄漏,怎么解決?

    alloc_socket在不斷創(chuàng)建socket時(shí)會(huì)不斷新建信號(hào)量和互斥鎖,導(dǎo)致內(nèi)存泄漏。 修改前: static struct wiz_socket *alloc_socket(vo
    發(fā)表于 09-10 08:22

    請(qǐng)問at_device不用at socket能使用bsd socket嗎?

    at_device不用at socket能使用bsd socket嗎?
    發(fā)表于 09-10 08:04

    【HZ-RK3568開發(fā)板免費(fèi)體驗(yàn)】基于 Select Poll的TCP發(fā)服務(wù)器

    模型: socket(...); // 創(chuàng)建套接 bind(...);// 綁定 listen(...); // 監(jiān)聽 while(1) { if(select(...) > 0
    發(fā)表于 08-19 22:01

    GraniStudio : TCP/IP(Socket)協(xié)議深度剖析

    Socket)客戶端與服務(wù)器模塊,通過高度封裝的可視化功能,將復(fù)雜的套接通信邏輯轉(zhuǎn)化為簡(jiǎn)單的 “拖拽式” 操作,為工業(yè)用戶構(gòu)建穩(wěn)定、高效的網(wǎng)絡(luò)通信系統(tǒng)提供了強(qiáng)大支撐。本文將從技術(shù)原理、功能實(shí)現(xiàn)、應(yīng)用場(chǎng)景三個(gè)維度,深入解析 G
    的頭像 發(fā)表于 08-03 22:20 ?1198次閱讀
    GraniStudio : TCP/IP(<b class='flag-5'>Socket</b>)協(xié)議深度剖析

    【嘉楠堪智K230開發(fā)板試用體驗(yàn)】網(wǎng)絡(luò)收發(fā)信息

    。 簡(jiǎn)單來說,Socket抽象層介于傳輸層和應(yīng)用層之間,跟TCP/IP并沒有必然的聯(lián)系。Socket編程接口在設(shè)計(jì)的時(shí)候,就希望也能適應(yīng)其他的網(wǎng)絡(luò)協(xié)議。 套接
    發(fā)表于 07-13 08:13

    01studio 1.2.2 01studio 1.2.0鏡像版本 socket無法使用怎么解決?

    (ai)addr = ai[0][-1]# 獲取第一個(gè)地址的sockaddr# 創(chuàng)建并連接套接s = socket.socket(socket.AF_INET,
    發(fā)表于 06-06 08:04

    CYUSB2014-BZXC USB端點(diǎn)編號(hào)的對(duì)應(yīng)關(guān)系是什么?

    你好客服, 我對(duì) CYUSB2014-BZXC 有疑問。 應(yīng)用說明(AN68829)第 6 頁解釋了線程和套接的概念,但我不明白它們?nèi)绾闻c USB 端點(diǎn)編號(hào)相對(duì)應(yīng)。 既然 CYUSB2014 支持 32 個(gè)端點(diǎn),那么邏輯插座
    發(fā)表于 05-21 06:14

    FX3 Socket緩沖區(qū)切換的最大時(shí)間是多少?

    中說“套接在填充或清空 DMA 緩沖區(qū)后,需要一段有限的時(shí)間(最多幾微秒)才能從一個(gè) DMA 描述符切換到另一個(gè) DMA 描述符”(第 14 頁)并且“如果外部外圍設(shè)備在套接從內(nèi)存
    發(fā)表于 05-16 07:51

    為什么cyu3socket.c中的CyBool_t CyU3PDmaSocketIsValid (uint16_t sckId) 使CY_U3P_CPU_SOCKET_PROD無效?

    指定以下 DAM IP 和套接
    發(fā)表于 05-13 07:26

    CPU Socket的基本結(jié)構(gòu)和工作原理

    CPU Socket是連接中央處理單元(CPU)與計(jì)算機(jī)主板之間的關(guān)鍵部件,它充當(dāng)著傳遞電信號(hào)、電源和散熱等多重功能的樞紐。在整個(gè)計(jì)算機(jī)系統(tǒng)中,CPU Socket的作用至關(guān)重要,尤其在高性能計(jì)算
    的頭像 發(fā)表于 05-08 17:14 ?2434次閱讀

    在KaihongOS應(yīng)用開發(fā)中,如何利用Socket進(jìn)行數(shù)據(jù)傳輸

    TCPSocketServer 對(duì)象。 綁定本地 IP 地址和端口,監(jiān)聽并接受與此套接建立的客戶端 TCPSocket 連接。 訂閱 TCPSocketServer 的 connect 事件,用于監(jiān)聽客戶端的連接
    發(fā)表于 05-08 07:25