ネットワークインタフェース

ローカル名のバインド

ソケットは、名前のない状態で作成されます。ソケットにアドレスがバインドされるまでは、遠隔プロセスはソケットを参照できません。通信プロセスは、アドレスを介して接続されます。インターネットファミリでは、接続はローカルアドレス、リモートアドレス、ローカルポート、およびリモートポートから構成されます。protocollocal addresslocal portforeign addressforeign port のような重複した順序セットは指定できません。

bind(3SOCKET) 呼び出しを使用すると、プロセスはソケットのローカルアドレスを指定できます。これは、local addresslocal port というセットになります。connect(3SOCKET)accept(3SOCKET) は、アドレスの対のリモート側を決定することにより、ソケットの関連付けを完了します。bind(3SOCKET) 呼び出しは次のように使用します。

bind (s, name, namelen);

ソケットハンドルは s です。バインドされる名前は、サポートするプロトコルによって解釈されるバイト列です。インターネットファミリ名には、インターネットアドレスとポート番号が含まれます。

次の例は、インターネットアドレスのバインドを示しています。

#include <sys/types.h>
#include <netinet/in.h>
...
struct sockaddr_in6 sin6;
...
		s = socket(AF_INET6, SOCK_STREAM, 0);
		bzero (&sin6, sizeof (sin6));
		sin6.sin6_family = AF_INET6;
		sin6.sin6_addr.s6_addr = in6addr_arg;
		sin6.sin6_port = htons(MYPORT);
		bind(s, (struct sockaddr *) &sin6, sizeof sin6);

アドレス sin6 の内容は、インターネットアドレスのバインドについて説明した 「アドレスのバインド」で説明しています。