Previous: Transaction Queues, Up: Processes


36.12 ネットワーク接続

Emacs Lispプログラムは、同一マシンや別のマシン上の他のプロセスに対して TCPネットワーク接続を開くことができます。 ネットワーク接続は、サブプロセスと同様にLispが扱い、 プロセスオブジェクトとして表現されます。 しかし、通信相手のプロセスはEmacsプロセスの子プロセスではありませんから、 キルしたりシグナルを送ることはできません。 データの送受信のみが可能です。 delete-processは接続を閉じますが、 もう一方の端のプロセスをキルしません。 そのプロセスは、接続が閉じた場合の動作を判断する必要があります。

ネットワーク接続を表すプロセスオブジェクトと サブプロセスを表すプロセスオブジェクトとは、 関数process-statusを使って区別できます。 この関数は、ネットワーク接続に対しては openclosedをつねに返し、 本当のサブプロセスに対してはこれらのいずれの値もけっして返しません。 See Process Information

— Function: open-network-stream name buffer-or-name host service

この関数は、ホストのサーバーに対するTCP接続を開く。 接続を表すプロセスオブジェクトを返す。

引数nameは、プロセスオブジェクトに付ける名前を指定する。 必要に応じて一意にするために修正される。

引数buffer-or-nameは、接続に対応付けるバッファである。 出力を扱うフィルタ関数を指定しない限り、 接続からの出力はそのバッファに挿入される。 buffer-or-namenilであると、 接続にはバッファを対応付けないことを意味する。

引数hostserviceは、接続先を指定する。 hostはホスト名(文字列)であり、 serviceは定義済みのネットワークサービス(文字列)か ポート番号(整数)である。