国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

兼容IPv4與IPv6的Winsock網絡編程研究

發布時間:2011-1-18 14:33    發布者:eetech
關鍵詞: IPv4 , IPv6 , Winsock , 網絡編程
隨著通信技術和網絡技術的飛速發展,特別是近年來,IPv4協議面臨著一些難以解決的問題,如地址短缺、缺乏服務質量控制Qos和安全性差等。為了應對這一挑戰,IETF(Internet Engineer Task Force)組織提出了為適應未來對于網絡基礎設施數量和質量需求而設計的下一代互聯網協議IPv6。IPv6繼承了IPv4的優點,并根據IPv4多年來運行的經驗進行了大幅度的修改和功能擴充,其擴展性、路由、安全性、配置和可靠性都有明顯改進。

1 IPv6相對于IPv4 WinSock的改變

1.1 IPv6中新增加的常量

為了支持IPv6,需要定義一個新的地址族名,以便正確地識別和解析IPv6的地址結構。同樣,還需要定義一個新的協議簇名(與地址族名具有相同的值),這樣就可以使用合適的協議創建一個套接字。新定義的IPv6地址簇名和協議簇名常量為:AF_INET6和PF_INET6。

1.2 IPV6中新增加的地址結構

IPv6的地址結構通過struct in6_addr和structockaddr_in6定義,結構定義分別如下:

1.3 IPV6中新增加的域名解析函數

IPv6引入了名為getaddrinfo()和getnameinfo()的新的API。這兩個API是與協議無關的,且既可用于IPv4,也可用于IPv6的名稱解析。getaddrinfo()函數的返回值是addrinfo的結構指針。


getaddrinfo()函數可以把主機名或服務名轉換成一組socket地址。hints相當于一個過濾器,只有符合hints結構的內容才會返回到res指針中。執行成功后,參數res以鏈表的形式返回解析出來的地址,可以將這些地址直接傳遞給bind(),connect(),sendto()等函數。

地址到名稱的轉換可以通過另一個新的套接字函數getnamein{o()進行。getnameinfo()函數的功能與getaddrinfo()函數相反,該函數接受已經初始化的套接字結構,并返回與地址及端口信息對應的主機和服務.

2 兼容IPv4與IPv6的WinSock網絡編程規則

2.1 使用sockaddr_storage結構

sockaddr_storage結構是新的套接字結構,它與協議無關,并擁有充分的地址空間容納IPv4或者IPv6地址信息,且可以很方便地轉換成sockaddr_in結構和sockaddr_in6結構。同時,這個結構還具有針對64位對齊問題的填充項,使用這個結構可以很容易地寫出與地址協議簇無關和跨平臺的程序代碼,因此編寫兼容IPv4與IPv6的網絡程序時要使用這個結構表示網絡地址。

2.2 使用新的名稱解析函數getaddrinfo()和getnam-einfo()

這兩個函數是隨IPv6引進的新的名稱解析函數,與地址協議簇無關,隱藏了名字到地址轉換和地址到名字轉換的大量細節,既能夠處理IPv6地址,也能處理IPv4地址。它們也替代性地實現了下列函數接口的功能:gethostbyname(),gethostbyaddr(),inet_ntoa(),inet_aton(),getservbyname(),getservbyport()。可以在簡化程序的同時實現與地址協議簇無關的編程,還可以提高程序的可移植性。

3 IPv4與IPv6雙協議試驗平臺的搭建

由于大部分用戶的操作系統都是Windows XP,所以在此僅介紹Windows XP下IPv6的安裝與配置。

Windows XP操作系統內置了IPv6協議棧,提供了一組命令行方式的IPv6檢測配置工具。在XP下安裝IPv6協議后,對原IPv4協議的使用不產生任何影響,整個網絡上各終端設備能夠在一個物理網絡上共享IPv4和IPv6協議,并支持2種協議的數據傳輸,即:所謂的雙棧(DualStack)共享。

安裝IPv6協議和配置地址及默認網關的過程如下:

4 VC環境下Daytime協議的實現

根據以上所述,下面開發一個可同時應用于IPv4和IPv6的實現Daytime協議的程序。該程序基于c/s結構,客戶端使用TCP協議連接到服務器端,向服務器發送請求;服務器收到請求后,將當前的時間發回客戶端。

4.1 服務器端程序設計

服務器端首先啟動,通過調用socket()建立一個Socket,然后調用bind()將該Socket和本地網絡地址聯系在一起,再調用listen()使Socket做好偵聽的準備,并規定請求隊列的長度,之后就調用accept()接收連接。連接建立后,服務器端創建一個通信用的’Sock-et,把當前時間發回給客戶端。最后,在數據傳送結束后,調用close()關閉Socket。

服務器端設計過程如下:

(1)創建服務器端套接字

(3)*并接收連接


4.2 客戶端程序設計

客戶端創建一個Socket,并調用connect()和服務器建立連接。連接建立后,客戶端等待服務器返回的當前時間。最后,待數據傳送結束后,調用close()關閉Socket。

客戶端設計過程如下。

(1)創建客戶端套接字

5 程序運行后的結果

當服務器運行后,可同時在IPv4和IPv6地址*,客戶端向服務器發送請求,服務器接到請求后,向客戶端返回一個當前時間。此實驗達到了預期效果。

6 結 語

雖然IPv6網絡已經開始實驗性部署,但是IPv4網絡向IPv6網絡的過渡和互通仍有一定難度,IPv4和IPv6網絡還需共存一段時間,因此開發能夠同時支持IPv4和IPv6的網絡應用程序會變得越來越重要。

在此編寫了一個能夠同時支持IPv4和IPv6協議的程序,此程序可以方便地進行今后其他應用協議及軟件的移植,需在服務器端設計過程及客戶端設計過程中根據其具體協議及軟件進行相應改變。
本文地址:http://www.qingdxww.cn/thread-49554-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黄色免费在线视频 | 亚洲欧洲尹人香蕉综合 | 韩国免费一级片 | 久久夫妻 | 午夜成年免费观看视频 | 一级骚片超级骚在线观看 | 久久九九免费 | 在线观看91精品国产剧情免费 | 国产三级精品久久三级国专区 | 精品亚洲永久免费精品 | 视频一区二区欧美日韩在线 | 国产欧美一区二区另类精品 | 亚洲欧美日韩国产综合久 | 国内精品久久久久影 | 日韩一区二区久久久久久 | 91精品欧美一区二区综合在线 | 日韩免费高清视频网站 | 中文字幕日本精品一区二区三区 | 神兵小将第一季免费播放 | 欧美大陆日韩一区二区三区 | 四虎成人免费观看在线网址 | 一级做性色a爰片久久毛片 一级做性色a爱片久久片 | 国产一区二区三区久久 | 亚洲精品午夜在线观看 | 亚洲黄色片免费看 | a一级一色一情 | 99re在线这里只有精品 | 日韩草逼视频 | 老司机在线精品视频 | 综合五月天婷婷丁香 | 国产情趣酒店鸳鸯浴在线观看 | 99热国产这里只有精品 | 精品国产一区二区三区2021 | 麻豆国产原创 | 日韩成人小视频 | 欧美成人动漫在线观看 | 国产91小视频| 日韩免费在线播放 | 成人免费的性色视频 | 久草中文网 | 久久中文字幕不卡一二区 |