inet_ntoa

[機能]

  IPv4 アドレスをドット 10 進文字列へ変換し,文字列へのポインタを返します.

[形式]
#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];   // プロトコル依存
};			
は,ソケットアドレス構造体の総称であり,ソケットアドレスを関数の引数として使用するような場合に使用される.実際上は,以下に示すいずれかが使用される.

  1. IPv4 ソケットアドレス構造体
    #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];   // 未使用
    };
    				
  2. IPv6 ソケットアドレス構造体
    #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 アドレス
    	                             // ネットワークバイト順序
    };
    				
[参照]

socket

菅沼ホーム 本文目次 演習問題解答例 付録目次 索引