2011-12-06 5 views
-4

IPv6アドレスを拡張したいのですが、そのアドレスを完全に拡張する方法はありますか? abcd:12 :: 7を取得した場合、abcd:0012:0000:0000:0000:0000:0000:0007 に拡張する必要があります。CでIPv6アドレスを拡張するには

私はすでにいくつかのコードを書いていますが、エラーを示しています。エラーは - "致命的なエラーC1083:インクルードファイルを開くことができません: 'arpa/inet.h':そのようなファイルまたはディレクトリ"。

+5

ご注文のような質問は、このサイトではうまく機能しません。試した内容を投稿してみてください。 – cnicutar

答えて

1

どのような種類のIPv6アドレス操作でも、4つの符号なし整数(各4バイト)の配列として格納する必要があります。ほとんどのスタックは多少このようにそれを保存し、これはLinuxカーネルからです:

struct in6_addr { 
     union { 
       __u8   u6_addr8[16]; 
       __be16   u6_addr16[8]; 
       __be32   u6_addr32[4]; 
     } in6_u; 
#define s6_addr     in6_u.u6_addr8 
#define s6_addr16    in6_u.u6_addr16 
#define s6_addr32    in6_u.u6_addr32 
}; 

あなたはinet_pton()を使用して、このパック形式に文字列を変換する必要があります。

+0

私のコードがある - の#include "stdafx.hを" の#include "string.hの" の#include "STDLIB.H" の#include "conio.h" の#include "ARPA/inet.h" のint _tmain (int argc、char argv []) { struct in6_addr { unsigned char s6_addr [16]; // IPv6アドレス }; struct in6_addr ipv6; char str [] = "abcd:1234 :: ffff"; IF(strcnt(STR、 ":")> 1) { \t(はinet_pton(AF_INET6、STR、&ipv6.s6_addr)) \t \tのprintfは(場合は、 "%sは%の0lluある(IPv6)の\ n" は、STR 、ipv6.s6_addr); \t else \t \t printf( "Error .."); } getch(); return 0; } – Neha

関連する問題