<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 基于C++中的IPv6網(wǎng)絡(luò)程序設(shè)計

          基于C++中的IPv6網(wǎng)絡(luò)程序設(shè)計

          作者: 時間:2012-09-12 來源:網(wǎng)絡(luò) 收藏

          三.獨立于協(xié)議的地址及名稱解析

          由此可見在尋址時,IPv4使用16字節(jié)的SOCK_ADDR_IN 結(jié)構(gòu),則使用28 字節(jié)的SOCK_ADDR_IN6 結(jié)構(gòu)。為了解決這個問題,中引入了新的尋址函數(shù)。 [Page]

          1.getaddrinfo(),它提供獨立于協(xié)議的名稱解析:

          int getaddrinfo(

          const char *FAR *nodenAME,

          const char FAR* SERvname,

          const struct addrinfo FAR *hins,

          struct addrinfo FAR *FAR *res

          );

          l 第一參數(shù):nodename,以空字節(jié)結(jié)束的主機名或文字地址

          l 第二參數(shù):servname,包含端口或服務(wù)名(如:FTP,TELNET)的以空字節(jié)結(jié)束的字符串

          l 第三個參數(shù):hins 是一個結(jié)構(gòu)(addrinfo),包含名稱解析的執(zhí)行方式選項

          l 第四個參數(shù):res ,用于返回 addrinfo 結(jié)構(gòu)的一個或多個鏈表

          結(jié)構(gòu)addrinfo 的定義:

          struct addrinfo{

          int ai_flags;

          int ai_family;

          int ai_socktype;

          int ai_protocol;

          size_t ai_addrlen;

          char *ai_cannoname;

          struct sockaddr *ai_addr;

          struct addrinfo *ai_next;

          }

          l ai_flags 選值:AI_PASSIVE:可以用來獲取能夠傳遞給bind函數(shù)的地址,此時nodename應(yīng)設(shè)置為NULL,servname為欲綁定的端口;AI _CANONNAME 表示nodename 是主機名;AI_NUMBERICHOST 表示, nodename 是一個文字字符串地址(如:“192.168.0.1”)

          l ai_family 選值:AI_INET或PF_INET(IPv4地址簇);AI_INET6或PF_INET6(地址簇);AI_UNSPEC(未指定,可能是IPv4或IPv6 地址簇)

          l ai_socktype選值:SOCK_DGRAM(UDP類型套接字);SOCK_STREAM (TCP類 型套接字)

          l ai_protocol 選值:IPPROTO_TCP (TCP/IP協(xié)議)

          如果函數(shù)解析成功,解析后的地址將通過res返回。如果名稱被解析為多個地址,則返回一個由ai_next 字段形成的鏈表。每個由名稱解析的地址在ai_addr中表示,長度在ai_addrlen中表示。

          2.getnameinfo()函數(shù)與getaddrinfo()相對應(yīng),功能相反。

          . int getnameinfo(

          const struct sockaddr FAR *sa,

          socklen_t salen, [Page]

          char FAR *host,

          DWORD hostlen,

          char FAR *serv,

          DWORD servlen,

          Int flags);

          以上參數(shù)的含義比較明顯,不再一一說明。

          3.釋放函數(shù): freeaddrinfo(res);

          四、兼容IPv4和IPv6的

          兼容IPv4和IPv6的程序,顯然涉及到兩個部分:客戶機和服務(wù)器。

          在Windows 編程中,Winsock是一種標(biāo)準(zhǔn)的API(應(yīng)用程序接口),Winsock2版本已經(jīng)發(fā)展成獨立于協(xié)議的的接口,被廣泛應(yīng)用于Windows平臺中。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();