初識socket程式設計 教你正確分手哦!!!

2021-10-10 16:39:51 字數 2704 閱讀 2918

走進科學

四次揮手

故事啟發

socket程式設計的實現

展望未來

1.第一次握手:client將標誌位syn置1,隨機產生乙個seq=x,並將該資料報傳送給server,client進入stn_sent狀態,等待server確認。

2.第二次握手:server收到資料報後由標誌位syn=1指導client請求建立鏈結,server將標誌位syn和ack都置為1,ack=x+1,隨機產生乙個seq=y,並將該資料報傳送給client以確認鏈結請求,server進入syn_rcvd狀態

3.第三次握手:client收到確認後,if(ack等於x+1&&ack等於1) 則將ack置1,ack=y+1,並將該資料報傳送給server,server檢查ack是否等於y+1,ack是否為1,如果正確則連線建立成功,client和server進入established狀態,完成三次握手,隨後client與server之間就可以開始傳輸資料了。

寫成故事,方便你理解

握手次數

故事寫成詩

第一次麥林炮手:一起雙飛嗎???

第二次蠻族之王: 好的,我早已****

第三次麥林炮手:10秒後起飛哦,要抓緊我!

所謂四次揮手,即終止tcp連線,就是指斷開乙個tcp連線時,需要客戶端和服務端總共傳送4個包以確認連線的斷開。在socket程式設計中,這一過程由客戶端或服務端任一方執行close來觸發。

由於tcp連線時全雙工的,因此,每個方向都必須要單獨進行關閉,這一原則是當以放完成資料傳送任務後,傳送乙個fin來終止這一放方向的連線,收到乙個fin只是意味著這一方向上沒有資料流動了,即不會再收到資料了,但是再這個tcp連線上仍然能夠傳送資料,直到這一方向也傳送了fin。首先進行關閉的一方將執行主動關閉,而另一方則執行被動關閉。

1.第一次揮手:client傳送乙個fin,用來關閉client到server的資料傳送,client進入fin_wait_1狀態

2.第二次揮手:server收到fin後,傳送乙個ack給client,確認序號為收到序號+1(與syn相同,乙個fin占用乙個序號),server進入close_wait狀態

3.第三次揮手:server傳送乙個fin,用來關閉server到client的資料傳送,server進入last_ack狀態

4.第四次揮手:client收到fin後,client進入time_wait狀態,接著傳送乙個ack給server,確認序號為收到序號+1,server進入closerd狀態,完成四次揮手。

寫成故事,方便你理解

揮手次數

故事寫成詩

第一次女:感情淡了,分手吧!

第二次男:你冷靜一點,我想想我**錯了

第三次男:我沒錯啊,就是感情談了,分手吧!

第四次女:嘿嘿,我就是找茬分手!分手成功

握手就不說了,說說分手!

第二次揮手,分析出問題,無法分手

第三次揮手,第二次沒分析出,但還想挽留,無法分手

第四次揮手,女方醒悟,無法分手

分手還挺難的,建議不到萬不得已不要分手。

看到這裡就快關注我吧!

建立乙個server.c檔案然後編寫程式如下

建立乙個client.c檔案然後編寫程式如下

python學習之Socket程式設計初識

在計算機通訊領域,socket 被翻譯為 套接字 它是計算機之間進行通訊的一種約定或一種方式。通過 socket 這種約定,一台計算機可以接收其他計算機的資料,也可以向其他計算機傳送資料。首先需要了解osi模型,osi模型共有七層 網路通訊要素 ip位址socket通訊流程 1伺服器根據位址型別 i...

教你正確挑選移動電源

現在市面上的移動電源簡直讓人挑花了眼。大大小小廠商推出的產品,有的走外觀 造型等差異化路線,有的簡單粗暴堆容量拼 面對一大批高容量低 的移動電源,不少人心動了,但時不時聽聞移動電源 的事故讓人心生憂慮。該如何正確挑選移動電源呢?對於普通消費者來說,看移動電源只能看外表,難以判斷其質量。移動電源有哪些...

python基礎(12) 初識Socket

socket 網路上的兩個程式通過乙個雙向的通訊連線實現資料的交換,這個連線的一端稱為乙個socket。socket的英文原義是 孔 或 插座 作為bsd unix的程序通訊機制,取後一種意思。通常也稱作 套接字 用於藐視ip位址和埠,是乙個通訊鏈的控制代碼,可以用來實現不同的虛擬機器或不同計算機之...