新聞中心

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

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

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

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

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

        1.getaddrinfo(),它提供獨(dú)立于協(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é)束的主機(jī)名或文字地址

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

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

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

        結(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ù)的地址,此時(shí)nodename應(yīng)設(shè)置為NULL,servname為欲綁定的端口;AI _CANONNAME 表示nodename 是主機(jī)名;AI_NUMBERICHOST 表示, nodename 是一個(gè)文字字符串地址(如:“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返回。如果名稱被解析為多個(gè)地址,則返回一個(gè)由ai_next 字段形成的鏈表。每個(gè)由名稱解析的地址在ai_addr中表示,長(zhǎng)度在ai_addrlen中表示。

        2.getnameinfo()函數(shù)與getaddrinfo()相對(duì)應(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的程序,顯然涉及到兩個(gè)部分:客戶機(jī)和服務(wù)器。

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



        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 涿州市| 阿克陶县| 封开县| 梧州市| 绿春县| 重庆市| 安塞县| 武功县| 沾益县| 甘洛县| 英山县| 郑州市| 遂昌县| 奉新县| 顺平县| 宾川县| 新余市| 天水市| 宣恩县| 灵石县| 六安市| 隆尧县| 乐安县| 台江县| 读书| 岱山县| 建始县| 巴楚县| 尚志市| 平邑县| 惠东县| 安多县| 禄丰县| 开阳县| 亚东县| 中方县| 全南县| 黔西| 简阳市| 福州市| 塘沽区|