在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

C++中網(wǎng)絡(luò)編程Socket介紹

C語言編程學(xué)習(xí)基地 ? 來源:C語言編程學(xué)習(xí)基地 ? 作者:C語言編程學(xué)習(xí)基地 ? 2021-10-26 10:10 ? 次閱讀

Socket

Linux Socket 編程(不限 Linux)

a9b4f35c-357e-11ec-82a8-dac502259ad0.jpg

Socket 中的 read()、write() 函數(shù)

ssize_tread(intfd,void*buf,size_tcount);ssize_twrite(intfd,constvoid*buf,size_tcount);

read()

read 函數(shù)是負(fù)責(zé)從 fd 中讀取內(nèi)容。

當(dāng)讀成功時,read 返回實際所讀的字節(jié)數(shù)。

如果返回的值是 0 表示已經(jīng)讀到文件的結(jié)束了,小于 0 表示出現(xiàn)了錯誤。

如果錯誤為 EINTR 說明讀是由中斷引起的;如果是 ECONNREST 表示網(wǎng)絡(luò)連接出了問題。

write()

write 函數(shù)將 buf 中的 nbytes 字節(jié)內(nèi)容寫入文件描述符 fd。

成功時返回寫的字節(jié)數(shù)。失敗時返回 -1,并設(shè)置 errno 變量。

在網(wǎng)絡(luò)程序中,當(dāng)我們向套接字文件描述符寫時有倆種可能。

(1)write 的返回值大于 0,表示寫了部分或者是全部的數(shù)據(jù)。

(2)返回的值小于 0,此時出現(xiàn)了錯誤。

如果錯誤為 EINTR 表示在寫的時候出現(xiàn)了中斷錯誤;如果為 EPIPE 表示網(wǎng)絡(luò)連接出現(xiàn)了問題(對方已經(jīng)關(guān)閉了連接)。

Socket 中 TCP 的三次握手建立連接

我們知道 TCP 建立連接要進行 “三次握手”,即交換三個分組。大致流程如下:

客戶端向服務(wù)器發(fā)送一個 SYN J

服務(wù)器向客戶端響應(yīng)一個 SYN K,并對 SYN J 進行確認(rèn) ACK J+1

客戶端再想服務(wù)器發(fā)一個確認(rèn) ACK K+1

只有就完了三次握手,但是這個三次握手發(fā)生在 Socket 的那幾個函數(shù)中呢?請看下圖:

a9c8e056-357e-11ec-82a8-dac502259ad0.png

從圖中可以看出:

(1)當(dāng)客戶端調(diào)用 connect 時,觸發(fā)了連接請求,向服務(wù)器發(fā)送了 SYN J 包,這時 connect 進入阻塞狀態(tài);

(2)服務(wù)器監(jiān)聽到連接請求,即收到 SYN J 包,調(diào)用 accept 函數(shù)接收請求向客戶端發(fā)送 SYN K ,ACK J+1,這時 accept 進入阻塞狀態(tài);

(3)客戶端收到服務(wù)器的 SYN K ,ACK J+1 之后,這時 connect 返回,并對 SYN K 進行確認(rèn);

(4)服務(wù)器收到 ACK K+1 時,accept 返回,至此三次握手完畢,連接建立。

Socket 中 TCP 的四次握手釋放連接

上面介紹了 socket 中 TCP 的三次握手建立過程,及其涉及的 socket 函數(shù)。現(xiàn)在我們介紹 socket 中的四次握手釋放連接的過程,請看下圖:

圖示過程如下:

某個應(yīng)用進程首先調(diào)用 close 主動關(guān)閉連接,這時 TCP 發(fā)送一個 FIN M;

另一端接收到 FIN M 之后,執(zhí)行被動關(guān)閉,對這個 FIN 進行確認(rèn)。它的接收也作為文件結(jié)束符傳遞給應(yīng)用進程,因為 FIN 的接收意味著應(yīng)用進程在相應(yīng)的連接上再也接收不到額外數(shù)據(jù);

一段時間之后,接收到文件結(jié)束符的應(yīng)用進程調(diào)用 close 關(guān)閉它的 socket。這導(dǎo)致它的 TCP 也發(fā)送一個 FIN N;

接收到這個 FIN 的源發(fā)送端 TCP 對它進行確認(rèn)。

這樣每個方向上都有一個 FIN 和 ACK。

————

今天的分享就到這里了,大家要好好學(xué)C++喲~

責(zé)任編輯:haq

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

    關(guān)注

    87

    文章

    11335

    瀏覽量

    210086
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3635

    瀏覽量

    93892
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2114

    瀏覽量

    73771

原文標(biāo)題:C++基礎(chǔ)語法梳理:網(wǎng)絡(luò)編程丨Socket

文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學(xué)習(xí)基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Spire.XLS for C++組件說明

    開發(fā)人員可以快速地在 C++ 平臺上完成對 Excel 的各種編程操作,如根據(jù)模板創(chuàng)建新的 Excel 文檔,編輯現(xiàn)有 Excel 文檔,以及對 Excel 文檔進行轉(zhuǎn)換。 Spire.XLS
    的頭像 發(fā)表于 01-14 09:40 ?90次閱讀
    Spire.XLS for <b class='flag-5'>C++</b>組件說明

    socket 和 UDP 協(xié)議的對比

    Socket 定義 Socket 是一個抽象層,它提供了一種方式,使得應(yīng)用程序能夠發(fā)送和接收數(shù)據(jù)。在網(wǎng)絡(luò)編程中,Socket 允許程序創(chuàng)
    的頭像 發(fā)表于 11-12 14:28 ?372次閱讀

    socket 多線程編程實現(xiàn)方法

    在現(xiàn)代網(wǎng)絡(luò)編程中,多線程技術(shù)被廣泛應(yīng)用于提高服務(wù)器的并發(fā)處理能力。Socket編程網(wǎng)絡(luò)通信的基礎(chǔ),而將多線程技術(shù)應(yīng)用于
    的頭像 發(fā)表于 11-12 14:16 ?430次閱讀

    socket 發(fā)送和接收數(shù)據(jù)方法

    1. Socket 基本概念 在網(wǎng)絡(luò)編程中,socket 是一個通信端點。它允許程序發(fā)送和接收數(shù)據(jù)。根據(jù)通信協(xié)議的不同,socket 可以分
    的頭像 發(fā)表于 11-12 14:07 ?633次閱讀

    socket 網(wǎng)絡(luò)通信協(xié)議解析

    通信機制,它允許兩個程序(通常位于不同的計算機上)進行雙向通信。在網(wǎng)絡(luò)編程中,Socket被用來實現(xiàn)客戶端和服務(wù)器之間的數(shù)據(jù)交換。一個Socket由一個IP地址和一個端口號唯一標(biāo)識,這
    的頭像 發(fā)表于 11-12 14:04 ?843次閱讀

    socket 編程基礎(chǔ)入門

    Socket 編程基礎(chǔ)入門 在計算機網(wǎng)絡(luò)中,Socket 是一個抽象層,它將網(wǎng)絡(luò)通信的細(xì)節(jié)隱藏起來,為開發(fā)者提供了一個簡單的接口來發(fā)送和接收
    的頭像 發(fā)表于 11-12 14:03 ?400次閱讀

    C語言中的socket編程基礎(chǔ)

    Socket編程簡介 Socket是一種通信機制,允許程序之間進行通信。在C語言中,socket編程
    的頭像 發(fā)表于 11-01 16:51 ?403次閱讀

    socket編程中的阻塞與非阻塞

    網(wǎng)絡(luò)編程中, socket 是一個非常重要的概念,它提供了一個抽象層,使得開發(fā)者可以不必關(guān)心底層的網(wǎng)絡(luò)通信細(xì)節(jié)。 socket
    的頭像 發(fā)表于 11-01 16:13 ?253次閱讀

    什么是socket編程 socket與tcp/ip協(xié)議的關(guān)系

    什么是Socket編程 Socket編程是一種網(wǎng)絡(luò)編程技術(shù),它允許程序之間進行通信。在計算機科學(xué)
    的頭像 發(fā)表于 11-01 16:01 ?438次閱讀

    socket和http區(qū)別是什么

    Socket和HTTP是兩種不同的網(wǎng)絡(luò)通信協(xié)議,它們在網(wǎng)絡(luò)編程中扮演著重要的角色。 定義 Socket(套接字)是一種通信端點,它提供了一個
    的頭像 發(fā)表于 08-16 11:04 ?971次閱讀

    socket的基本概念和原理

    Socket是一種通信協(xié)議,用于在網(wǎng)絡(luò)中實現(xiàn)進程間的通信。它是一種抽象的編程接口,允許應(yīng)用程序通過網(wǎng)絡(luò)發(fā)送和接收數(shù)據(jù)。 1. 什么是Socket
    的頭像 發(fā)表于 08-16 10:51 ?1334次閱讀

    簡述socket編程中的常用函數(shù)

    Socket編程是一種基于TCP/IP協(xié)議的網(wǎng)絡(luò)編程技術(shù),它允許應(yīng)用程序通過網(wǎng)絡(luò)進行通信。在Socket
    的頭像 發(fā)表于 08-16 10:49 ?436次閱讀

    如何理解socket編程接口

    Socket編程接口是一種網(wǎng)絡(luò)編程的基本概念,它提供了一種在不同計算機之間進行通信的方法。 Socket
    的頭像 發(fā)表于 08-16 10:48 ?483次閱讀

    c語言,c++,java,python區(qū)別

    C語言、C++、Java和Python是四種常見的編程語言,各有優(yōu)點和特點。 C語言: C語言是一種面向過程的
    的頭像 發(fā)表于 02-05 14:11 ?2536次閱讀

    vb語言和c++語言的區(qū)別

    VB語言和C++語言是兩種不同的編程語言,雖然它們都屬于高級編程語言,但在設(shè)計和用途上有很多區(qū)別。下面將詳細(xì)比較VB語言和C++語言的區(qū)別。 設(shè)計目標(biāo): VB語言(Visual Bas
    的頭像 發(fā)表于 02-01 10:20 ?2453次閱讀
    主站蜘蛛池模板: 亚洲精品色图| 四虎.com| 68日本xxxxxxxxx777| 男人操女人视频网站| 免费观看视频网站| 日本欧洲亚洲一区在线观看| 男女视频在线观看免费| 中文天堂最新版资源新版天堂资源| 一品毛片| 色宅男午夜电影在线观看| 日本黄a| 扛着高跟鞋丝袜腿呻吟视频| 韩国最新三级网站在线播放| 成年黄网站免费大全毛片| 伊人网在线观看| 久久综合操| 37pao强力打造免费高速高清 | 成年女人毛片免费观看97| 又大又粗又爽黄毛片| 末满18以下勿进色禁网站| 97超频国产在线公开免费视频| 一区二区三区四区在线不卡高清| 九九热re| 深爱五月网| 久久精品国产亚洲综合色| 伊人色综合久久天天爱| 久草福利在线播放| 日本在线亚洲| 特黄特级高清免费视频毛片| 咪咪爱毛片| 11111日本网站| 精品黄色片| 欧美视频一区二区三区四区| 四虎影院2022| 国产一级在线观看www色| 天天看片天天干| 免费观看在线视频| 亚洲第一色在线| 精品一级毛片| 免费午夜不卡毛片| 老司机精品免费视频|