2009-10-20 18 views
130

ソケットプログラミングを始めていますが、私はこれを見て続けていますAF_INET。しかし、私はその場所で使われているものは見たことがありません。私の講師はそれほど役に立ちません。ちょうど「あなたはただ必要です」と言います。だから私の質問:AF_INETとは何ですか、なぜそれが必要なのですか?

  • AF_INETの目的は何ですか?
  • これの代わりに他の何かが使用されていますか?
    • そうでない場合は、それはなぜですか?将来の可能性のある変更については?
    • もしそうなら、何と、なぜですか?

答えて

163

AF_INETは、ソケットが通信できるアドレスのタイプ(この場合はインターネットプロトコルv4アドレス)を指定するために使用されるアドレスファミリです。ソケットを作成するときには、そのアドレスファミリを指定する必要があります。ソケットを使用してそのタイプのアドレスしか使用できません。たとえば、Linuxカーネルは、UNIX(AF_UNIX)ソケットやIPX(AF_IPX)などの29種類のアドレスファミリをサポートしており、IRDAとBluetooth(AF_IRDAAF_BLUETOOTH)との通信もサポートしていますが、レベル)。

ほとんどの場合、ネットワークを介したソケットプログラミングのためにAF_INETを貼っておくのが最も安全な方法です。インターネットプロトコルv6アドレス用のAF_INET6もあります。

希望すると、

35

AF_INETの主な目的は、他の可能なネットワークプロトコルまたはアドレスファミリーを可能にすることであった(AFは、アドレスファミリのためのものである。PF_INETは(IPv4)のインターネット・プロトコル・ファミリのためのものです)。たとえば、おそらくNetware SPX/IPXネットワークがまだあります。 DECNet、StarLAN、SNAのような他のネットワークシステムもありました.ISO OSI(Open Systems Interconnection)はもちろんのこと、ネットワーク接続におけるピアホストを識別するために、今や遍在するIPアドレスを必ずしも使用していませんでした。

IPv6アドレスファミリでは、AF_INETの代わりにAF_INET6(AF_INET4という名前にする必要があります)がAF_INET6です。 IPv4は32ビットのアドレスを使用します。 IPv6は128ビットのアドレスを使用します。

他の値が表示されることがありますが、それは珍しいことです。それは選択肢と将来の方向性を可能にするためです。実際にソケットインターフェイスは非常に一般的です。これは、他のネットワーキングインターフェイスが枯渇した理由の1つです。

人生は(ほとんど)簡単になりました - 感謝しています。

+0

おかげでかなりまともなのですか?あなたは他の質問についてもっと具体的にしてください。 – Smashery

+0

AF_INET6についての良い点;他のアドレスファミリはいくつかのOSでサポートされています。 – MarkR

11

ソケットはドメイン、タイプ、およびトランスポートプロトコルによって特徴付けられます。一般的なドメインは、次のとおりです。

  1. AF_UNIX:アドレス形式は、ホストとポート番号

です(使用することができ、他の多くのオプションが実際にあります。アドレス形式は

  • AF_INET UNIXパス名であります特別な目的のためにここに)。通常、我々はソケットプログラミングのためにAF_INETを使用

    参考:http://www.cs.uic.edu/~troy/fall99/eecs471/sockets.html

  • 13

    あなたはAF_UNIXまたはAF_INETのような引数を使用して、IPCソケット通信を実現するために使用されるだろう対処するソケットのタイプを指定する必要があります。 AFはアドレスファミリを表します。

    次のように(Pythonのソケットモジュールに採用)BSD標準ソケットにアドレスが示されているとおり

    1. 単一列はAF_UNIX/AF_LOCALアドレスファミリのために使用されます。このオプションは、IPアドレスが不要なローカルマシン上のIPCに使用されます。

    2. AF_INETアドレスファミリには(host、port)が使用されます.hostは、 'daring.cwi.nl'のようなインターネットドメイン表記のホスト名または '100.50.200.5'のようなIPv4アドレスを表す文字列です'、およびportは整数です。インターネット上のプロセス間で通信するために使用されます。

    AF_UNIX、AF_INET6、AF_NETLINK、AF_TIPC、AF_CAN、AF_BLUETOOTH、AF_PACKET、AF_RDS代わりAF_INETを使用することができる他の選択肢です。

    このthread about the differences between AF_INET and PF_INETも有用です。

    1

    プロトコルファミリを定義します。これは、作成されるソケットのタイプを決定します。 ポケットPCサポートAF_INET。私は私の最初の質問に対するあなたの答えは、その目的に使用するかをネットワークプロトコルを定義することであるということであると推測しています -

    次のページの内容はあなたの応答のための http://etutorials.org/Programming/Pocket+pc+network+programming/Chapter+1.+Winsock/Streaming+TCP+Sockets/

    関連する問題