自己動(dòng)手用c語言寫一個(gè)基于服務(wù)器和客戶端

2021-03-03    分類: 網(wǎng)站建設(shè)

如果想要自己寫一個(gè)服務(wù)器和客戶端,我們需要掌握一定的網(wǎng)絡(luò)編程技術(shù),個(gè)人認(rèn)為,網(wǎng)絡(luò)編程中最關(guān)鍵的就是這個(gè)東西——socket(套接字)。

socket(套接字):簡單來講,socket就是用于描述IP地址和端口,是一個(gè)通信鏈的句柄,可以用來實(shí)現(xiàn)不同虛擬機(jī)或不同計(jì)算機(jī)之間的通信。

TCP協(xié)議

TCP協(xié)議:是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,由IETF的RFC 793定義。在簡化的計(jì)算機(jī)網(wǎng)絡(luò)OSI模型中,它完成第四層傳輸層所指定的功能。

關(guān)鍵詞:三次握手,可靠,基于字節(jié)流。

可能有朋友會(huì)問,TCP就這么簡單一句話嗎?當(dāng)然不是,TCP作為非常重要的傳輸協(xié)議,細(xì)節(jié)知識(shí)是很多的,細(xì)講起來這一篇文章怕是不夠。不過在本篇內(nèi)容中,我們只需了解他的幾個(gè)關(guān)鍵詞特性,就能很好的理解下面的內(nèi)容。

TCP服務(wù)器端和客戶端的運(yùn)行流程

如圖,這是一個(gè)完整的TCP服務(wù)器——客戶端的運(yùn)行流程圖,其實(shí)我個(gè)人認(rèn)為程序啊,不管哪個(gè)語言都是一樣,核心就在于算法的設(shè)計(jì)和函數(shù)的調(diào)用。那么圖中的函數(shù)都是什么意思呢?

1.創(chuàng)建socket

socket是一個(gè)結(jié)構(gòu)體,被創(chuàng)建在內(nèi)核中

 sockfd=socket(AF_INET,SOCK_STREAM,0); //AF_INT:ipv4, SOCK_STREAM:tcp協(xié)議

2.調(diào)用bind函數(shù)

將socket和地址(包括ip、port)綁定。

需要定義一個(gè)結(jié)構(gòu)體地址,以便于將port的主機(jī)字節(jié)序如果無請求,將會(huì)阻塞,直到獲得連接

 int fd=accept(sockfd, NULL,NULL);//這邊采用默認(rèn)參數(shù)

5.調(diào)用read/write進(jìn)行雙向通信

6.關(guān)閉accept返回的socket

網(wǎng)站標(biāo)題:自己動(dòng)手用c語言寫一個(gè)基于服務(wù)器和客戶端
網(wǎng)址分享:http://muchs.cn/news/103890.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃、小程序開發(fā)、定制開發(fā)、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化