2021-03-03 分類: 網(wǎng)站建設(shè)
如果想要自己寫一個(gè)服務(wù)器和客戶端,我們需要掌握一定的網(wǎng)絡(luò)編程技術(shù),個(gè)人認(rèn)為,網(wǎng)絡(luò)編程中最關(guān)鍵的就是這個(gè)東西——socket(套接字)。
socket(套接字):簡(jiǎn)單來(lái)講,socket就是用于描述IP地址和端口,是一個(gè)通信鏈的句柄,可以用來(lái)實(shí)現(xiàn)不同虛擬機(jī)或不同計(jì)算機(jī)之間的通信。
TCP協(xié)議:是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,由IETF的RFC 793定義。在簡(jiǎn)化的計(jì)算機(jī)網(wǎng)絡(luò)OSI模型中,它完成第四層傳輸層所指定的功能。
關(guān)鍵詞:三次握手,可靠,基于字節(jié)流。
可能有朋友會(huì)問(wèn),TCP就這么簡(jiǎn)單一句話嗎?當(dāng)然不是,TCP作為非常重要的傳輸協(xié)議,細(xì)節(jié)知識(shí)是很多的,細(xì)講起來(lái)這一篇文章怕是不夠。不過(guò)在本篇內(nèi)容中,我們只需了解他的幾個(gè)關(guān)鍵詞特性,就能很好的理解下面的內(nèi)容。
TCP服務(wù)器端和客戶端的運(yùn)行流程
如圖,這是一個(gè)完整的TCP服務(wù)器——客戶端的運(yùn)行流程圖,其實(shí)我個(gè)人認(rèn)為程序啊,不管哪個(gè)語(yǔ)言都是一樣,核心就在于算法的設(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é)序如果無(wú)請(qǐng)求,將會(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語(yǔ)言寫一個(gè)基于服務(wù)器和客戶端
網(wǎng)址分享:http://jinyejixie.com/news/103890.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃、小程序開(kāi)發(fā)、定制開(kāi)發(fā)、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容