RubyでのWinSockの初期化

拡張で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");
...