1.IPv4ソケットアドレス構造体
構造体in_addr形式{ s_addrのin_addr_t; // unsigned int型 }; 構造体のsockaddr_in { // このフィールドsin_len uint8_tが別のシステム上にあってもよい、私のシステムは、Ubuntuの同様のアドレス構造説明19.04で sin_familyはsa_familiy_t; // 符号なしショート sin_portはをin_port_t; //は、符号なしショート 構造体sin_addr in_addr形式。 符号なしチャー sin_zero〔はsizeof(構造体のsockaddr) - \ はsizeof(sa_familiy_t) - はsizeof(in_port_t) - はsizeof(構造体in_addr形式)]。 }。
sin_familyは家族に属しているプロトコルを示しています。sin_portは指定されたネットワークバイト順バイナリ値sin_addr.s_addr、ポート番号(0〜65535)を示しています。上から見sin_zeroソケットの同じ構成およびサイズは、一般的なアドレス構造をSOCKADDRように、パディングバイトを使用することです。
2.一般的なソケットアドレス構造体とは何ですか?
汎用ソケットアドレス構造体はソケットアドレス構造の異なるプロトコルスイートを取り扱う容易にすることである、すなわち、通常のソケットアドレス構造パラメータとして構造体のsockaddr * SAを通過する必要があります。
構造体のsockaddr { // uint8_t SA_LEN。 sa_family_t sin_familiy; チャー sa_data [ 14 ]。 }。
3.IPv6ソケットアドレス構造体:
in6_addr {構造体
組合は{//私のシステムで組合構造によって実現される
// unsigned char型; uint8_tの__u6_addr8 [16]
uint16_tの__u6_addr16の[8]; //符号なしshort
のuint32_tの__u6_addr32の[4]; // unsigned int型
} __ in6_u ;
};
構造体SOCKADDR_IN6 {
sa_family_t sin6_familiy。
int_port_t sin6_port;
uint32_t sin6_flowinfo;
sin6_addrのin6_addr構造体。
uint32_tではsin6_scope_id;
} 。
IPv6アドレスファミリがAF_INET6です。sin6_addrではフィールドは128ビットです。下位20フローラベル、上位12予約:sin6_flowinfoフィールドは、2つのフィールドに分割されます。
アドレスの範囲を含むため、ではsin6_scope_idための最も一般的なインターフェイス・インデックスのリンクローカルアドレスで、フィールドはその範囲を識別する。
4.新しい汎用ソケットアドレス構造体は:
構造体SOCKADDR_STORAGE { ss_familyをsa_family_t; / * アドレスファミリなど * / のchar [_SS_PADSIZE] __ss_padding。 __ss_align __ss_aligntype; / * フォースアライメントを希望。 * / }。
システムでサポートされている任意のソケットアドレス構造体を収容することができますSOCKADDR_STORAGE。
5.Unixドメインソケットアドレス構造体
6.データリンクソケットアドレス構造体
継続するには...