IPv6アドレスを拡張したいのですが、そのアドレスを完全に拡張する方法はありますか? abcd:12 :: 7を取得した場合、abcd:0012:0000:0000:0000:0000:0000:0007 に拡張する必要があります。CでIPv6アドレスを拡張するには
私はすでにいくつかのコードを書いていますが、エラーを示しています。エラーは - "致命的なエラーC1083:インクルードファイルを開くことができません: 'arpa/inet.h':そのようなファイルまたはディレクトリ"。
IPv6アドレスを拡張したいのですが、そのアドレスを完全に拡張する方法はありますか? abcd:12 :: 7を取得した場合、abcd:0012:0000:0000:0000:0000:0000:0007 に拡張する必要があります。CでIPv6アドレスを拡張するには
私はすでにいくつかのコードを書いていますが、エラーを示しています。エラーは - "致命的なエラーC1083:インクルードファイルを開くことができません: 'arpa/inet.h':そのようなファイルまたはディレクトリ"。
どのような種類の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()
を使用して、このパック形式に文字列を変換する必要があります。
私のコードがある - の#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
ご注文のような質問は、このサイトではうまく機能しません。試した内容を投稿してみてください。 – cnicutar