web-dev-qa-db-ja.com

ソケットプログラミングでのbind()呼び出し

私はソケットプログラミングについて読んでいて、サーバーに接続する前にbind()呼び出しでソケットにipが割り当てられていることを知りました。アドレスのバインドは、任意のIPアドレスを正しくバインドすることを意味します。

2
Jeevansai Jinne

bind()は、作成したソケットとホストで使用可能なアドレスの関係を定義します。たとえば、すべてのアドレスまたはホストのオペレーティングシステムによってネットワークアダプターに構成されている特定のIPにソケットをバインドできます。

このコードを実行するホストで利用可能なすべてのアドレスにソケットをバインドする方法の例を次に示します。

struct sockaddr_in name;

name.sin_family = AF_INET;
name.sin_port = htons (port);
name.sin_addr.s_addr = htonl(INADDR_ANY);
if (bind (socket, (struct sockaddr *) &name, sizeof (name)) < 0) {
    perror ("bind");
    exit (-1);
}

サーバーアプリケーションの場合、ユーザーは、セキュリティ上の理由から、ソケットを特定のアドレスにのみバインドするように制限したり、サービスを利用可能にしたい場所にサービスをマップしたりすることを好みます。このため、ほとんどのサーバーでは、アプリケーションの構成ファイルを使用して、ユーザーのバインドアドレスを簡単に構成できます。

1