About Ruby Socket

RubyVMのソケットはsocket/sys.hで定義されているsocket関数のラッパ。具体的には、./ext/socket/socket.cの中で以下の様に定義されている:

 #ifdef USE_WINSOCK2
 #define open_socket(a, t, p)    open_ifs_socket(a, t, p)
 #else
 #define open_socket(a, t, p)    socket(a, t, p)
 #endif

ちなみに、open_ifs_socket(a, t, p)はWINSOCK2のラッパ。つまり、コンパイル時に使用するソケットを切り替えてバイナリにしている。まぁ当然といえば当然か。