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