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