[#28681] ブロックパラメータと多値について — Takaaki Tateishi <ttate@...>

11 messages 2006/06/02

[#28708] 1.8.5 release schedule? — URABE Shyouhei <root@...>

というわけで今日の基調講演で8月に1.8.5が出ることになったわけですが。

105 messages 2006/06/10
[#28709] Re: 1.8.5 release schedule? — Yukihiro Matsumoto <matz@...> 2006/06/10

まつもと ゆきひろです

[#28711] Re: 1.8.5 release schedule? — URABE Shyouhei <root@...> 2006/06/11

卜部です。

[#28751] Re: 1.8.5 release schedule? — URABE Shyouhei <root@...> 2006/06/19

卜部です。

[#28752] Re: 1.8.5 release schedule? — Yukihiro Matsumoto <matz@...> 2006/06/19

まつもと ゆきひろです

[#28753] Re: 1.8.5 release schedule? — URABE Shyouhei <root@...> 2006/06/19

卜部です。

[#28754] Re: 1.8.5 release schedule? — Yukihiro Matsumoto <matz@...> 2006/06/19

まつもと ゆきひろです

[#28813] Re: 1.8.5 release schedule? — URABE Shyouhei <root@...> 2006/06/23

卜部です。

[#28818] ruby 1.8.5 preview1 (Re: Re: 1.8.5 release schedule?) — Yukihiro Matsumoto <matz@...> 2006/06/24

まつもと ゆきひろです

[#28819] Re: ruby 1.8.5 preview1 (Re: Re: 1.8.5 release schedule?) — URABE Shyouhei <root@...> 2006/06/24

卜部です。

[#28820] Re: ruby 1.8.5 preview1 (Re: Re: 1.8.5 release schedule?) — Kouhei Yanagita <yanagi@...> 2006/06/24

柳田です。

[#28821] udp test with ruby 1.8.5 preview1 on cygwin — Tanaka Akira <akr@...17n.org> 2006/06/24

In article <y7vnup05.wl%yanagi@shakenbu.org>,

[#28823] Re: udp test with ruby 1.8.5 preview1 on cygwin — Kouhei Yanagita <yanagi@...> 2006/06/24

> いちおう問題の切り分けをするために確認したいんですが、その環

[#28824] Re: udp test with ruby 1.8.5 preview1 on cygwin — Tanaka Akira <akr@...17n.org> 2006/06/24

In article <veqrun77.wl%yanagi@shakenbu.org>,

[#28825] Re: udp test with ruby 1.8.5 preview1 on cygwin — Kouhei Yanagita <yanagi@...> 2006/06/24

mswin32 版ではどうなるのだろうと思って

[#28833] Re: udp test with ruby 1.8.5 preview1 on cygwin — info@... 2006/06/24

Cygwin @ WindowsXP SP2 です。

[#28834] Re: udp test with ruby 1.8.5 preview1 on cygwin — Tanaka Akira <akr@...17n.org> 2006/06/24

In article <449D66EC.8050405@cyanet.jp>,

[#29120] Re: 1.8.5 release schedule? — "U.Nakamura" <usa@...> 2006/07/24

こんにちは、なかむら(う)です。

[#29121] Re: 1.8.5 release schedule? — Yukihiro Matsumoto <matz@...> 2006/07/24

まつもと ゆきひろです

[#29128] bugs in ruby_1_8 (Re: 1.8.5 release schedule?) — URABE Shyouhei <root@...> 2006/07/25

卜部です。

[#29133] Re: bugs in ruby_1_8 (Re: 1.8.5 release schedule?) — Yukihiro Matsumoto <matz@...> 2006/07/26

まつもと ゆきひろです

[#29144] Re: bugs in ruby_1_8 (Re: 1.8.5 release schedule?) — URABE Shyouhei <root@...> 2006/07/26

卜部です。

[#29146] Re: bugs in ruby_1_8 (Re: 1.8.5 release schedule?) — Yukihiro Matsumoto <matz@...> 2006/07/26

まつもと ゆきひろです

[#29185] 1.8.5 preview3? — URABE Shyouhei <root@...> 2006/08/04

卜部です。

[#29186] Re: 1.8.5 preview3? — Yukihiro Matsumoto <matz@...> 2006/08/04

まつもと ゆきひろです

[#29225] Re: 1.8.5 preview3? — URABE Shyouhei <root@...> 2006/08/08

卜部です。

[#29226] Re: 1.8.5 preview3? — Yukihiro Matsumoto <matz@...> 2006/08/08

まつもと ゆきひろです

[#29228] Re: 1.8.5 preview3? — Yukihiro Matsumoto <matz@...> 2006/08/08

まつもと ゆきひろです

[#29231] Re: 1.8.5 preview3? — URABE Shyouhei <root@...> 2006/08/08

卜部です。

[#28718] binding の仕様変更? or バグ? — Hidetoshi NAGAI <nagai@...>

永井@知能.九工大です.

15 messages 2006/06/12

[#28744] rational 1.08 — Tadayoshi Funaba <tadf@...>

ふなばです。

27 messages 2006/06/18
[#28773] Re: rational 1.08 — Shin-ichiro HARA <sinara@...> 2006/06/20

原です。

[#28830] Re: rational 1.08 — Tadayoshi Funaba <tadf@...> 2006/06/24

ふなばです。

[ruby-dev:28698] nonblocking socket operation on Windows (Re: test/socket for Windows)

From: "U.Nakamura" <usa@...>
Date: 2006-06-08 04:31:45 UTC
List: ruby-dev #28698
こんにちは、なかむら(う)です。

In message "[ruby-dev:28694] test/socket for Windows"
    on Jun.07,2006 15:12:25, <usa@garbagecollect.jp> wrote:
| 最近のsocket周りのテストを実行していて、Windowsでいろいろ問題
| があるということに気付きました。
| 最大の問題は read_nonblock と write_nonblock で固まっちゃうと
| いうものなのですが、これはこっちの問題なのでとりあえず置いて
| おきます(置いておいていい話でもないんですが...)。

今回は、前回置いておいたこっちの話の方です。

Windowsでは、ファイルデスクリプタに対してノンブロッキングモー
ドを設定できたりはしないのですが、ソケットは特別扱いとしてそ
れが可能になっています。
しかし、Windowsではファイルデスクリプタ(Cランタイムが管理して
います)とソケット(OSが管理しています)は全くの別物なので、Ruby
の実装ではこの辺をうまくごまかして、ソケットとファイルデスク
リプタを無理矢理結びつけることによって、Ruby本体側のコードが
この問題を気にせずに取り扱えるようにしてあります。

さて、Cランタイムのread()/write()は、いんちきファイルデスクリ
プタを使ってソケットを渡されてもそれなりに正しく動作します。
しかし、read()/write()は元々ソケットが渡されることを想定して
作られてはいないので、ノンブロッキングモードの存在をまったく
知りません。
ソケットに対するread_nonblock、write_nonblockも、結局内部では
read()/write()を使っているので、そこであえなくブロックしてし
まうわけです。
以上が問題の背景です。


さて、ソケットのことなんか知らないread()/write()を使うから問
題が発生してるわけですから、ちゃんとソケットのことを知ってい
る何かを使えばこの問題は回避できます。
具体的には、recv()/send()を使えば、ノンブロッキングモード時に
はちゃんとブロックせずに動作します。

これでめでたしめでたし、と言いたいところなのですが、Windowsに
はテキストモード、バイナリモードというやっかいなものがありま
して、recv()/send()はテキストモードの存在を知りません。


以上を踏まえて、ご相談です。
いったいどうするのがよいでしょう?

(1) Windowsではread_nonblock、write_nonblockは諦めろ
(2) バイナリモードの時だけrecv()/send()を使え
(3) (2)に加えて、ノンブロッキングモードの時は自動的にバイナリ
    モードにしろ
(4) (2)なんだけど、そもそもソケットはバイナリモード専用にしろ
(5) テキストモードをサポートしたrecv()/send()を書け
(6) その他の案があればどうぞ


それでは。
-- 
U.Nakamura <usa@garbagecollect.jp>
ぶんしょうながいよ



In This Thread