程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> Beej’s Guide Network to Programming 系列連載07

Beej’s Guide Network to Programming 系列連載07

編輯:關於C

4.從IPv4到IPv6
       但是我要知道從當前的代碼變更為工作在IPv6上!告訴我!

       好好~~

       說了這麼多,我們就是講他。

       1) 首先,請使用getaddrinfo()來獲得struct sockeaddr的信息,來替代我們的封裝。這將使你的程序代碼與IP版本無關,以便我們的後續步驟。

       2) 在任何硬編碼的地方,請使用其它函數代替。

       3) 更改AF_INET 為AF_INET6

       4) 更改PF_INET 為PF_INET6 www.2cto.com

       5) 賦值為INADDR_ANY的變更為in6addr_any。

              struct sockaddr_in sa;

              struct sockaddr_in6 sa6;

 

              sa.sin_addr.s_addr = INADDR_ANY;           // use my IPv4 address

              sa6.sin6_addr = in6addr_any;                         // use my IPv6 address

             

       當我們聲明struct in6_addr的時候,也能使用IN6ADDR_ANY_INIT來初始他。像下面:

              struct in6_addr ia6 =IN6ADDR_ANY_INIT;

6) 使用struct sockaddr_in6來替換struct sockaddr_in。因為在上一版本中沒有sin6_zero這個字段。

       7) 使用structin6_addr替換struct in_addr。

       8) 使用inet_pton()替換inet_aton()和inet_addr();

       9) 使用inet_ntop()替換inet_ntoa();

       10)使用getaddrinfo()替換gethostbyname();

       11)使用getnameinfo()替換gethostbyaddr();

              雖然gethostbyaddr()也能工作在IPv6上。

       12)使用IPv6的組播(multicast)替換INADDR_BROADCAST。

 

       就這樣!

 

 摘自 xiaobin_HLJ80的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved