[pgsql-jp: 27035] Re: usogresの仕様について質問がございます。

Hiroyuki OYAMA oyama @ crayfish.co.jp
2002年 8月 14日 (水) 16:03:25 JST


クレイフィッシュの小山です。

usogresの仕様と言うよりは、postmasterとusogresが設定したと
おりに動作した結果こうなっています。

On Wed, 14 Aug 2002 11:27:49 +0900
"nakanohideyuki" <hnakano @ fastnet.co.jp> wrote:
> 'psql -h 192.168.1.11 -p 5432' では正常に起動できますが、
> 
> 'psql -h localhost -p 5432'  では以下のエラーメッセージがでて
> 接続できません。
> 
> --------------- エラーメッセージ ------------------------
> %psql -h localhost -p 5432
> psql: could not connect to server: Connection refused
>         Is the server running on host localhost and accepting
>         TCP/IP connections on port 5432?
> -----------------------------------------------------
> 
> usogresを介さない接続ですと、
> 'psql -h 192.168.1.11 -p 5432'
> 'psql -h localhost -p 5432'
> とも正常に接続できます。
> 
> 上記の現象は、usogresの仕様なのでしょうか?


恐らくusogresrcで以下のように記述すれば期待する動作をする
と思います。

host = "0.0.0.0"

# 私はusogresを使ったことは有りませんし、usogresのコードも
# 流し読みしただけですので検証してません。


ちなみにpostmasterは明示的にIPアドレスを指定しない場合、
INADDR_ANY(0.0.0.0)にbindして全てのインターフェイスで
clientからの接続を受け付けるようにしています。

   libpq/pqconn.c:238

        if (family == AF_INET)
        {
                /* TCP/IP socket */
                if (hostName[0] == '\0')
                        saddr.in.sin_addr.s_addr = htonl(INADDR_ANY);

このため、(設定されない限り)そのマシンに存在する全てのイン
ターフェイスでclientの要求を受け付ける事になります。

そしてusogresはusogresrcで指定されたインターフェイスにbind
するので、結果このような動作の差異が生じます。
# usogres も'host'が未定義の場合はINADDR_ANYにbindするのかな?


この辺について詳しくはSocketに関する文献ををご参照ください。
あとはこのへんとか。
	http://www.kt.rim.or.jp/~ksk/sock-faq/unix-socket-faq-ja-4.html#ss4.12

___
ちなみに localhost = 127.0.0.1 ではないホストも有り得るの
で
	http://usogres.good-day.net/install.php3

の記述例はちょっぴりアレかもしれませんね。
______________
Hiroyuki OYAMA <oyama @ crayfish.co.jp>
System Operations Dept.
Crayfish Co.,Ltd. <http://Crayfish.CO.JP/>
  "PerlとRubyでYahoo!Messenger"
   -> http://ymca.infoware.ne.jp/





pgsql-jp メーリングリストの案内