兼容IPv4與IPv6的Winsock網(wǎng)絡(luò)編程研究
根據(jù)以上所述,下面開發(fā)一個(gè)可同時(shí)應(yīng)用于IPv4和IPv6的實(shí)現(xiàn)Daytime協(xié)議的程序。該程序基于c/s結(jié)構(gòu),客戶端使用TCP協(xié)議連接到服務(wù)器端,向服務(wù)器發(fā)送請(qǐng)求;服務(wù)器收到請(qǐng)求后,將當(dāng)前的時(shí)間發(fā)回客戶端。
4.1 服務(wù)器端程序設(shè)計(jì)
服務(wù)器端首先啟動(dòng),通過調(diào)用socket()建立一個(gè)Socket,然后調(diào)用bind()將該Socket和本地網(wǎng)絡(luò)地址聯(lián)系在一起,再調(diào)用listen()使Socket做好偵聽的準(zhǔn)備,并規(guī)定請(qǐng)求隊(duì)列的長度,之后就調(diào)用accept()接收連接。連接建立后,服務(wù)器端創(chuàng)建一個(gè)通信用的’Sock-et,把當(dāng)前時(shí)間發(fā)回給客戶端。最后,在數(shù)據(jù)傳送結(jié)束后,調(diào)用close()關(guān)閉Socket。
服務(wù)器端設(shè)計(jì)過程如下:
(1)創(chuàng)建服務(wù)器端套接字本文引用地址:http://2s4d.com/article/157984.htm
(3)監(jiān)聽并接收連接
4.2 客戶端程序設(shè)計(jì)
客戶端創(chuàng)建一個(gè)Socket,并調(diào)用connect()和服務(wù)器建立連接。連接建立后,客戶端等待服務(wù)器返回的當(dāng)前時(shí)間。最后,待數(shù)據(jù)傳送結(jié)束后,調(diào)用close()關(guān)閉Socket。
客戶端設(shè)計(jì)過程如下。
(1)創(chuàng)建客戶端套接字
5 程序運(yùn)行后的結(jié)果
當(dāng)服務(wù)器運(yùn)行后,可同時(shí)在IPv4和IPv6地址監(jiān)聽,客戶端向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器接到請(qǐng)求后,向客戶端返回一個(gè)當(dāng)前時(shí)間。此實(shí)驗(yàn)達(dá)到了預(yù)期效果。
服務(wù)器端運(yùn)行結(jié)果如圖1所示。
6 結(jié) 語
雖然IPv6網(wǎng)絡(luò)已經(jīng)開始實(shí)驗(yàn)性部署,但是IPv4網(wǎng)絡(luò)向IPv6網(wǎng)絡(luò)的過渡和互通仍有一定難度,IPv4和IPv6網(wǎng)絡(luò)還需共存一段時(shí)間,因此開發(fā)能夠同時(shí)支持IPv4和IPv6的網(wǎng)絡(luò)應(yīng)用程序會(huì)變得越來越重要。
在此編寫了一個(gè)能夠同時(shí)支持IPv4和IPv6協(xié)議的程序,此程序可以方便地進(jìn)行今后其他應(yīng)用協(xié)議及軟件的移植,需在服務(wù)器端設(shè)計(jì)過程(4)及客戶端設(shè)計(jì)過程(3)中根據(jù)其具體協(xié)議及軟件進(jìn)行相應(yīng)改變。
評(píng)論