Next: , Up: サーバーとしてのEmacsの使用   [Contents][Index]


40.1 EmacsのTCPサーバー

Emacsサーバーは通常、接続にたいしてローカルのUnixドメインソケットをlistenします。 MS-Windowsのようないくつかのオペレーティングシステムは、ローカルソケットをサポートしません。そのような場合、サーバーはかわりにTCPソケットをlistenします。ローカルソケットがサポートされている場合でも、サーバーにTCPソケットをlistenさせるほうが便利な場合があります(たとえばリモートマシンからEmacsサーバーに接続する必要がある場合)。ローカルソケットのかわりにTCPソケットをEmacsにlistenさせる場合は、server-use-tcpに非nilをセットできます。これはOSがローカルソケットをサポートしない場合は、デフォルトです。

EmacsサーバーがTCPを使うように設定されている場合は、デフォルトではlocalhostインターフェイスのランダムなポートをlistenします。server-hostserver-portを使用して、これを他のインターフェイス、および/または固定されたポートに変更できます。

TCPソケットは、ファイルシステムのパーミッションの対象ではありません。TCPソケットを通じて、誰がEmacsサーバーと通信できるか何らかの制御を得るには、emacsclientプログラムがサーバーに認証キーを送信しなければなりません。このキーは通常、Emacsサーバーによりランダムに生成されます。これが推奨されるモードです。

必要なら、server-auth-key変数をセットすることにより、認証キーに静的な値をセットできます。このキーは、スペースを除くプリント可能な64文字のASCII文字(これは‘!’から‘~’、10進コードの33から126を意味します)から構成されなければなりません。ランダムキーを得るために、M-x server-generate-keyを使用できます。

TCP Emacsサーバーを開始したとき、Emacsはemacsclientがサーバーに接続するために使用する、TCP情報を含むサーバーファイル(server file)を作成します。変数server-auth-dirは、サーバーファイルを含むデフォルトディレクトリーを指定します。デフォルトでは、これは~/.emacs.d/server/です。アクセス権限(file permission)をもつlocalソケットが存在しない場合は、このディレクトリーのパーミッションにより、どのユーザーのemacsclientプロセスがEmacsサーバーと対話(talk)できるか判断されます。server-nameがー絶対ファイル名なら、サーバーファイルはそのファイル名で作成されます。

特定のserverファイルによりTCPサーバーに接続するようemacsclientに指示するには、オプション‘-f’または‘--server-file’を使用するか、環境変数EMACS_SERVER_FILEをセットします(emacsclientのオプションを参照)。server-auth-dirが非標準的な値にセットされていたり、server-nameに絶対ファイル名がセットされていると、デフォルトのserver-auth-dirは、相対ファイル名を解決するために使用するディレクトリーとして、emacsclient内にハードコーディングされているため、serverファイルにたいする絶対ファイル名が必要になります。