Previous: サーバーとクライアントの通信
Up: Xウィンドウ概論
第10回 ウィンドウ + ネットワーク = X
Next: 通信プログラムを作る手順
Previous Page: サーバーとクライアントの通信
Next Page: 通信プログラムを作る手順
普通はワークステーションの画面は1台に1個です。
従って、ホスト名を与えればたいていはディスプレイが決まります。
しかし、中には1台のマシンが複数の入力装置とディスプレイを備え、
複数のサーバープロセスを実行できるかもしれません。
Xでは、そのようなケースにも対応できるように、
ホスト名の後にサーバープロセスの番号を与えて
「ディスプレイ名」とする約束です。
たとえば、 ipca1 というマシンに2組の入出力装置のセットがあり、
2個のサーバープロセスが走っているとしたら、「ディスプレイ名」は
ipca1:0 ipca1:1 のようにして与えます。
また、入力装置が1セットでサーバープロセスが1個しかなくても、
独立したディスプレイが存在する可能性もあります。
(三面鏡のようなディスプレイを想像してください。)
その場合には次のようにディスプレイ名を与えます。
ipca1:0.0 ipca1:0.1 ipca1:0.2
ウィンドウが表示されるマシンの指定は、関数 XOpenDisplay() によって行われます。
この関数の引数には「ディスプレイ名」を渡します。
上で述べたように、ディスプレイ名は通常「ホスト名:0」です。
たとえばマシン名が ipcb2 のディスプレイにウィンドウを表示させたければ、
文字列 "ipcb2:0" を引数に指定するだけでよいわけです。
dsp = XOpenDisplay( "ipcb2:0" );
dsp = XOpenDisplay( NULL );
DISPLAY=ipcj7:0 a.out
main( int argc, char **argv ) { Display *dsp; dsp = XOpenDisplay( argv[1] ); /* 引数にそのままディスプレイ名 */ : (または)main( int argc, char **argv ) { Display *dsp; char server[64]; /* ディスプレイ名を記憶する */
sprintf( server, "%s:0", argv[1] ); /* 引数がマシン名の場合 */ dsp = XOpenDisplay( server ); :