拡張でWinSockの初期化をするわけにはいかないよなぁ…ということでRubyのソース(1.8.6-p111)を読んでみる。
win32/win32.cのStartSockets()関数でWinSockで初期化されてた。
static void StartSockets () { WORD version; WSADATA retdata; int ret; #ifndef USE_WINSOCK2 int iSockOpt; #endif // // initalize the winsock interface and insure that it's // cleaned up at exit. // #ifdef USE_WINSOCK2 version = MAKEWORD(2, 0); if (WSAStartup(version, &retdata)) rb_fatal ("Unable to locate winsock library!\n"); ...