• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > EDA/PCB > 設計應用 > 基于C++中的IPv6網絡程序設計

    基于C++中的IPv6網絡程序設計

    作者: 時間:2012-09-12 來源:網絡 收藏

    三.獨立于協議的地址及名稱解析

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

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

    int getaddrinfo(

    const char *FAR *nodenAME,

    const char FAR* SERvname,

    const struct addrinfo FAR *hins,

    struct addrinfo FAR *FAR *res

    );

    l 第一參數:nodename,以空字節結束的主機名或文字地址

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

    l 第三個參數:hins 是一個結構(addrinfo),包含名稱解析的執行方式選項

    l 第四個參數:res ,用于返回 addrinfo 結構的一個或多個鏈表

    結構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函數的地址,此時nodename應設置為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協議)

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

    2.getnameinfo()函數與getaddrinfo()相對應,功能相反。

    . int getnameinfo(

    const struct sockaddr FAR *sa,

    socklen_t salen, [Page]

    char FAR *host,

    DWORD hostlen,

    char FAR *serv,

    DWORD servlen,

    Int flags);

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

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

    四、兼容IPv4和IPv6的

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

    在Windows 編程中,Winsock是一種標準的API(應用程序接口),Winsock2版本已經發展成獨立于協議的的接口,被廣泛應用于Windows平臺中。



    關鍵詞: IPv6 網絡 程序設計

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 阳高县| 濉溪县| 阿尔山市| 贵定县| 北海市| 郴州市| 时尚| 蓬安县| 崇文区| 虞城县| 洞口县| 白沙| 山阳县| 陇川县| 徐闻县| 铜川市| 齐齐哈尔市| 泗洪县| 富宁县| 绥芬河市| 揭东县| 特克斯县| 乌海市| 化隆| 新绛县| 青河县| 天柱县| 邹城市| 万源市| 绍兴县| 平塘县| 孙吴县| 衡东县| 外汇| 安徽省| 沾化县| 长武县| 彩票| 伊春市| 建宁县| 正镶白旗|