電子・情報工学系/システム情報工学研究科CS専攻 新城 靖 <yas@is.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~syspro/2005/No6_files/sockaddr.html
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~syspro/2005/
http://www.coins.tsukuba.ac.jp/~yas/
TCP/IP (IPv4) の場合、アドレスの指定には、sockaddr_in 構造体を使う。connect() システムコールのマニュアルには、sockaddr 構造体を使うようにと書かれて いるが、TCP/IP では、そのサブクラス(オブジェクト指向用語)である sockaddr_in を使う。それには、 IP アドレスとポート番号が必要である。 その他に、sockaddr 構造体のサブクラスの中でも sockaddr_in であることを 示す定数 AF_INET が先頭に現れる。
/usr/include/bits/sockaddr.h:
/* POSIX.1g specifies this type name for the `sa_family' member. */ typedef unsigned short int sa_family_t; #define __SOCKADDR_COMMON(sa_prefix) \ sa_family_t sa_prefix##family/usr/include/bits/socket.h:
/* Structure describing a generic socket address. */ struct sockaddr { __SOCKADDR_COMMON (sa_); /* Common data: address family and length. */ char sa_data[14]; /* Address data. */ };/usr/include/netinet/in.h:
typedef uint16_t in_port_t; /* Structure describing an Internet socket address. */ struct sockaddr_in { __SOCKADDR_COMMON (sin_); in_port_t sin_port; /* Port number. */ struct in_addr sin_addr; /* Internet address. */ /* Pad to size of `struct sockaddr'. */ unsigned char sin_zero[sizeof (struct sockaddr) - __SOCKADDR_COMMON_SIZE - sizeof (in_port_t) - sizeof (struct in_addr)]; };/usr/include/sys/un.h:
/* Structure describing the address of an AF_LOCAL (aka AF_UNIX) socket. */ struct sockaddr_un { __SOCKADDR_COMMON (sun_); char sun_path[108]; /* Path name. */ };