From: "akr (Akira Tanaka)" Date: 2013-07-06T09:21:49+09:00 Subject: [ruby-dev:47485] [ruby-trunk - Bug #8605] TestSocket_TCPSocket#test_initialize_failure fails on Windows Issue #8605 has been updated by akr (Akira Tanaka). Parent task set to #8574 Bug #8574 にもあって、なにが起きてるのかなぁ、と思っていたのですが、 調べてみると、_WIN32 と __CYGWIN__ では SO_REUSEADDR を使っていないようです。 ext/socket/ipsocket.c: 9627 usa #if !defined(_WIN32) && !defined(__CYGWIN__) 9627 usa status = 1; 9627 usa setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, 27529 nobu (char*)&status, (socklen_t)sizeof(status)); 9627 usa #endif r9627 からは [ruby-core:6765] をたどれて、Win32 では SO_REUSEADDR が うまく動かないとのことですが、これはいまでもそうなんでしょうか。 ---------------------------------------- Bug #8605: TestSocket_TCPSocket#test_initialize_failure fails on Windows https://bugs.ruby-lang.org/issues/8605#change-40316 Author: usa (Usaku NAKAMURA) Status: Assigned Priority: Normal Assignee: akr (Akira Tanaka) Category: ext Target version: current: 2.1.0 ruby -v: ruby 2.1.0dev (2013-07-05 trunk 41797) [x64-mswin64_100] Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN =begin 表題の通りですが、こんな風に失敗しています。 76) Failure: TestSocket_TCPSocket#test_initialize_failure [D:/tmp/mswin-build20130705-8260-1av0ek2/ruby/test/socket/test_tcp.rb:24]: Expected /for\ "127\.0\.0\.1"\ port\ 11459/ to match "Only one usage of each socket address (protocol/network address/port) is normally permitted. - connect(2) for \"127.0.0.1\" port 11458". テストを眺めると、クライアントポート側で失敗するはずだ、と明記されているわけですが、なぜかご覧の通りでサーバポート側でエラーメッセージが出力されております。 これはrubyでどうにかすべき問題でしょうか? それとも単にプラットフォーム依存として片付けるべき? =end -- http://bugs.ruby-lang.org/