[PHP-users 17037]Re: UDPブロードキャストを受け取るには?

Osamu Shigematsu m5issige @ mr.hitachi-medical.co.jp
2003年 7月 29日 (火) 17:05:25 JST


重松です。こんにちは。
小山さん、コメントありがとうございます。

>   socket 関数の日本語マニュアルはちょっと古いもののようで、現時点では
> かなり間違ったことが書かれていますね。翻訳されている方には申し訳ないの
> ですが、私は不審に思ったときには必ず英語マニュアルをあたるようにしてい
> ます。英語マニュアルでは
> 
> 	bool socket_bind(resource socket, string address [,int port])
> 
> となってますね。

ですね。

私は、socket の一覧のところにあるサンプルをみて、
日本語版と代わり映えがしなかったので、
socket_bind() も修正されていないもの、と誤認しました。

>   socket 関数でエラーになったときには
> 
> 	socket_strerror(socket_last_error())
> 
> でエラーの原因を表示させた方が、解決の糸口になってよいですよ。

あ、E_ALL だと、ちゃんと文句いってくれるので、手抜きしました。 :)

>   エラーになっているのは socket_bind だけですか?
>   だとすると EADDRINUSE (Address already in use) の可能性が高いです。
> 前回使用したポートがまだ使われているものだとして bind がエラーになる現
> 象です。

はい、これ発生します。たまに。

>   これを回避するには、socket_bind の前に
> 
> 	socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
> 
> を呼んでおきます。

試してみます。m(__)m

一段楽したら、マニュアルの正誤表でも作ろうかしら。。。

-- 
Osamu Shigematsu <m5issige @ mr.hitachi-medical.co.jp>



PHP-users メーリングリストの案内