私はソケットプログラミングを始めていますが、このAF_INET
を見続けています。
しかし、その代わりに使用されるものを見たことはありません。私の講師はそれほど役に立たず、「必要なだけです」と言うだけです。
だから私の質問:
AF_INET
の目的は何ですか?AF_INET
は、ソケットが通信できるアドレスのタイプ(この場合、インターネットプロトコルv4アドレス)を指定するために使用されるアドレスファミリです。ソケットを作成するときは、そのアドレスファミリを指定する必要があり、そのタイプのアドレスのみをソケットで使用できます。たとえば、Linuxカーネルは、UNIX(AF_UNIX
)ソケットやIPX(AF_IPX
)などの29個のその他のアドレスファミリをサポートし、IRDAおよびBluetooth(AF_IRDA
およびAF_BLUETOOTH
)との通信もサポートしますが、これらを低頻度で使用するのは疑わしいですレベル)。
ほとんどの場合、ネットワークを介したソケットプログラミングにAF_INET
を使用することが最も安全なオプションです。インターネットプロトコルv6アドレス用のAF_INET6
もあります。
お役に立てれば、
AF_INETの主な目的は、他の可能なネットワークプロトコルまたはアドレスファミリを許可することでした(AFはアドレスファミリ用、PF_INETは(IPv4)インターネットプロトコルファミリ用)。たとえば、まだいくつかのNetware SPX/IPXネットワークがまだ存在しています。 DECNet、StarLAN、SNAのような他のネットワークシステムがあり、悪意のあるISO OSI(Open Systems Interconnection)は言うまでもなく、これらは必ずしもネットワーク接続でピアホストを識別するために必ずしも遍在するIPアドレスを使用しませんでした。
AF_INET(振り返ってみると、AF_INET4と名付けられていたはずです)の一般的な代替は、IPv6アドレスファミリ用のAF_INET6です。 IPv4は32ビットアドレスを使用します。 IPv6は128ビットアドレスを使用します。
他の値が表示される場合がありますが、それらは異常です。代替案と将来の方向性を考慮してあります。ソケットインターフェイスは実際、非常に一般的です。これが、他のネットワークインターフェイスが枯れた場所で成功した理由の1つです。
人生は(ほとんど)シンプルになりました。感謝してください。
IPCソケット通信を実装するために使用するソケットアドレス指定のタイプを指定するには、AF_UNIXやAF_INETなどの引数が必要です。 AFはAddress Familyの略です。
BSD標準ソケット(Pythonソケットモジュールで採用)と同様に、アドレスは次のように表されます。
AF_UNIX/AF_LOCALアドレスファミリには単一の文字列が使用されます。このオプションは、IPアドレスが不要なローカルマシンのIPCに使用されます。
ペア(ホスト、ポート)はAF_INETアドレスファミリに使用されます。ホストは、「daring.cwi.nl」のようなインターネットドメイン表記のホスト名または「100.50.200.5」のようなIPv4アドレスのいずれかを表す文字列であり、ポートは整数。インターネットを介したプロセス間の通信に使用されます。
AF_UNIX、AF_INET6、AF_NETLINK、AF_TIPC、AF_CAN、AF_BLUETOOTH、AF_PACKET、AF_RDSは、AF_INETの代わりに使用できる他のオプションです。
この AF_INETとPF_INETの違いに関するスレッド も役立つ場合があります。
ソケットは、ドメイン、タイプ、およびトランスポートプロトコルによって特徴付けられます。一般的なドメインは次のとおりです。
AF_UNIX:アドレス形式はUNIXパス名です
AF_INET:アドレス形式はホストとポート番号です
(実際には、特殊な目的のためにここで使用できる他の多くのオプションがあります)。通常、ソケットプログラミングにはAF_INETを使用します
プロトコルアドレスファミリを定義します。これにより、作成されるソケットのタイプが決まります。ポケットPCサポートAF_INET。
次のページのコンテンツはかなりまともです http://etutorials.org/Programming/Pocket+pc+network+programming/Chapter+1.+Winsock/Streaming+TCP+Sockets/