[#7785] rb2c — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

28 messages 1999/09/02

[#7845] [Q] irb and SizedQueue — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

14 messages 1999/09/15

[ruby-dev:7842] Re: socket and buffering

From: matz@... (Yukihiro Matsumoto)
Date: 1999-09-13 15:08:42 UTC
List: ruby-dev #7842
まつもと ゆきひろです

In message "[ruby-dev:7840] socket and buffering"
    on 99/09/13, Masaki Fukushima <fukusima@goto.info.waseda.ac.jp> 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を活用するしかないのか。

In This Thread