1 /* 2 * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 #include <iostream> 26 #include <winsock2.h> 27 28 using namespace std; 29 30 void 31 initWinsock() 32 { 33 static int initted = 0; 34 WORD wVersionRequested; 35 WSADATA wsaData; 36 int err; 37 38 if (!initted) { 39 wVersionRequested = MAKEWORD( 2, 0 ); 40 41 err = WSAStartup( wVersionRequested, &wsaData ); 42 if ( err != 0 ) { 43 { 44 /* Tell the user that we couldn't find a usable */ 45 /* WinSock DLL. */ 46 cerr << "SocketBase::SocketBase: unable to find usable " 47 << "WinSock DLL" << endl; 48 exit(1); 49 } 50 } 51 52 /* Confirm that the WinSock DLL supports 2.0.*/ 53 /* Note that if the DLL supports versions greater */ 54 /* than 2.0 in addition to 2.0, it will still return */ 55 /* 2.0 in wVersion since that is the version we */ 56 /* requested. */ 57 58 if ( LOBYTE( wsaData.wVersion ) != 2 || 59 HIBYTE( wsaData.wVersion ) != 0 ) { 60 /* Tell the user that we couldn't find a usable */ 61 /* WinSock DLL. */ 62 { 63 cerr << "Unable to find suitable version of WinSock DLL" << endl; 64 WSACleanup( ); 65 exit(1); 66 } 67 } 68 69 initted = 1; 70 } 71 }