From: matz@... (Yukihiro Matsumoto) Date: 1999-09-14T00:08:42+09:00 Subject: [ruby-dev:7842] Re: socket and buffering まつもと ゆきひろです In message "[ruby-dev:7840] socket and buffering" on 99/09/13, Masaki Fukushima writes: |gtkとsocketの問題を調べていて気づいたんですが、ruby の socket か |らの読み込みって、全くバッファリングされないんですね。 そうです。ソケットの場合へたにバッファリングするとかなり難し い問題の原因になるので。 |したがって、sysread以外の入力メソッドを使うと全部 1 byte ずつ |read システムコールが発行されてしまうと。 |stdioを経由で、ブロックせずに読み込むにはそれしかないからだと思い |ますけど。 readも大丈夫でしょう? 内心ではソケットの入力はreadかrecvだ よなあと思ってます。問題はどこにも書いた覚えがないことですが。 |あと、Socket#read (IOから継承) を使うと fread の所でインタプリタ |が止ってしまうことがありませんか? | |例えば 1 バイトだけデータが到着しているソケットに aSocket.read(2) |とかやると、fread で 2byte 読み込もうとしてブロックしてしまいます。 あるかも。どうやって回避するのが良いでしょうねえ。 # 全面的にO_NDELAYを活用するしかないのか。