#include <arpa/inet.h> char *inet_ntoa(struct in_addr addr) addr : IPv4 アドレス
参考: ソケットアドレス構造体
struct sockaddr {
uint8_t sa_len;
sa_family_t sa_family; // アドレスファミリ( AF_*** )
char sa_data[14]; // プロトコル依存
};
#include <netinet/in.h>
struct in_addr {
in_addr_t s_addr; // 32 ビットの IPv4 アドレス
// ネットワークバイト順序
};
struct sockaddr_in {
uint8_t sin_len; // 構造体の大きさ( 16 バイト)
sa_family_t sin_family; // AF_INET
in_port_t sin_port; // 16 ビットのポート番号
// ネットワークバイト順序
struct in_addr sin_addr; // 32 ビット IPv4 アドレス
// ネットワークバイト順序
char sin_zero[8]; // 未使用
};
#include <netinet/in.h>
#define SIN6_LEN
struct in6_addr {
uint8_t s6_addr[16]; // 128 ビットの IPv6 アドレス
// ネットワークバイト順序
};
struct sockaddr_in6 {
uint8_t sin6_len; // 構造体の大きさ( 24 バイト)
sa_family_t sin6_family; // AF_INET6
in_port_t sin6_port; // トランスポート層ポート番号
// ネットワークバイト順序
uint32_t sin6_flowinfo; // 優先度フローラベル
// ネットワークバイト順序
struct in6_addr sin6_addr; // IPv6 アドレス
// ネットワークバイト順序
};
| 菅沼ホーム | 本文目次 | 演習問題解答例 | 付録目次 | 索引 |