ネットワークプロセスを作成する際、以下のネットワークオプションを指定できます。:reuseaddrを除き、これらのオプションは後からset-network-process-optionを使用して設定または変更することも可能です。
サーバープロセスの場合、make-network-process
で指定したオプションはクライアント接続に継承されないため、子接続が作成されるたびに必要となるオプションを設定する必要があります。
:bindtodevice device-namedevice-name がネットワークインターフェース名(network-interface-list
を参照)を識別する空でない文字列である場合は、そのインターフェースで受信したパケットのみを処理します。device-name が nil(デフォルト)である場合は、任意のインターフェースで受信したパケットを処理します。
このオプションを使用するには、一部のシステムで特別な権限が必要な場合があります。
:broadcast broadcast-flagデータグラムプロセスにおいて broadcast-flag が nil
以外である場合、そのプロセスはブロードキャストアドレス宛てに送信されたデータグラムパケットを受信でき、またブロードキャストアドレス宛てにパケットを送信できます。ストリーム接続の場合、この動作は無視されます。
:dontroute dontroute-flagdontroute-flag が nil
でない場合、プロセスはローカルホストと同じネットワーク上のホストにのみ送信できます。
:keepalive keepalive-flagストリーム接続において keepalive-flag が nil 以外の場合、低レベルの keep-alive メッセージの交換を有効にします。
:linger linger-arglinger-arg が nil
以外の場合、接続上のすべてのキュー済みパケットの送信が完了するまで待機してから削除されます(delete-process を参照)。linger-arg
が整数の場合、接続を閉じる前にキュー済みパケットが送信されるまで待機する最大時間(秒単位)を指定します。デフォルトは nil で、これはプロセス削除時に未送信のキュー済みパケットを破棄することを意味します。
:oobinline oobinline-flagストリーム接続において oobinline-flag が nil
以外の場合は、通常のデータストリーム内で帯域外データを受信します。それ以外の場合は、帯域外データを無視します。
:priority priorityこの接続で送信されるパケットの優先度を整数 priority に設定します。この数値の解釈はプロトコル固有であり、例えばこの接続で送信される IP パケットの TOS(サービス種別)フィールドを設定する場合などが挙げられます。また、ネットワークインターフェース上の特定の出力キューを選択するなど、システム依存の影響を及ぼす場合もあります。
:reuseaddr reuseaddr-flagストリームサーバープロセスにおいて reuseaddr-flag が nil 以外(デフォルト)である場合、このサーバーが特定のポート番号(:service
を参照)を再利用することを許可します。ただし、このホスト上の別のプロセスが既にそのポートで待ち受けている場合はこの限りではありません。reuseaddr-flag が nil
である場合、(ホスト上の任意のプロセスによる)そのポートの最終利用後、そのポートで新しいサーバーを起動できなくなる期間が生じることがあります。
:nodelay nodelay-flagnodelay-flag が nil
以外の場合、ソケットで TCP_NODELAY オプションが有効になります。これにより Nagle
アルゴリズムが無効になり、データ量が少なくてもネットワークセグメントが可能な限り速やかに送信されるようになります。これによりネットワーク接続上のレイテンシは低減しますが、大量の小さなパケットが送信される可能性があります。
この関数は、ネットワークプロセス process
のネットワークオプションを設定または変更します。受け付けられるオプションおよび値は、make-network-process と同様です。no-error が nil 以外の場合、option がサポートされていないオプションであっても、この関数はエラーを通知する代わりに nil を返します。関数が正常に完了した場合は、t
を返します。
オプションの現在の設定は、process-contact関数で取得できます。