BOOL CServerSocet::StartServer(CString* sError) { if(bCreateSocket) CloseSocket(sError); if(!bInitWinSocket) if (!StartWinSock(sError)) return FALSE; if (!SocketGetHostName(sError)) return FALSE; if (!CreateSocket(sError)) return FALSE; if (!LinkSoketPort(sError)) return FALSE; if (!LinkWindowSocket(hWnd,sError)) return FALSE; if (!ListenSocket(sError)) return FALSE; sokClientSocket = new stSockets *[iMaxCol]; int i; for(i=0;i<iMaxCol;i++) { sokClientSocket[i] = new (stSockets); sokClientSocket[i]->dBase = NULL; sokClientSocket[i]->sUserIP = _T(""); sokClientSocket[i]->bAdmin = FALSE; sokClientSocket[i]->sDataStart = _T(""); sokClientSocket[i]->sok = NULL; sokClientSocket[i]->hThread = 0; } bStatus = TRUE; return TRUE; }
void GameStatePlayInit(void) { // initialize winsock try { StartWinSock(); } catch(WSErr& e) { printf("%s\n", e.msg_.c_str()); } GetLocalIP(client.localIP_); try { // local IP of client computer client.udpSock_.SetIP(client.localIP_); // set port to whatever is available next client.udpSock_.SetPortNumber(0); } catch( iSocket::SockErr& e ) { CloseWinSock(); e.Print(); } // specify port and ip of remote connection, which will be the server client.remoteAddr_.SetIP(client.config_.serverIp_); client.remoteAddr_.SetPortNumber(client.config_.serverPort_); client.udpSock_.Init(); client.udpSock_.AcceptFrom(client.remoteAddr_); SendJoinMessage(); // reset the number of current asteroid and the total allowed sAstCtr = 0; sAstNum = AST_NUM_MIN; // get the time the asteroid is created sAstCreationTime = AEGetTime(); // reset the score and the number of ship sScore = 0; sShipCtr = SHIP_INITIAL_NUM; sSpecialCtr = SHIP_SPECIAL_NUM; // reset the delay to switch to the result state after game over sGameStateChangeCtr = 2.0f; }
int main( int argc, char *argv[] ) { #ifdef TEST_TCP_SOCKETS StartWinSock(); TCPSocket listener; TCPSocket client; char *localIP = NULL; GetLocalIP( localIP ); listener.SetIP( localIP ); listener.SetPortNumber( 8000 ); listener.Init(); listener.Listen(); while( !listener.Accept( client ) ); while( true ) { std::string message; Prompt( message, "Enter a message" ); NetworkMessage netMessage; netMessage.msg_.Assign( message.c_str(), message.size() ); client.Send( netMessage ); } client.Shutdown(); client.Close(); listener.Shutdown(); listener.Close(); CloseWinSock(); #endif /* GameControl controller; try { controller.Init(); try { controller.Run(); } catch( BaseErrExcep e ) { e.Print(); } controller.Close(); } catch( BaseErrExcep e ) { e.Print(); } */ FileServer fileServer; try { fileServer.Init(); try { fileServer.Run(); } catch(BaseErrExcep& e) { e.Print(); } fileServer.Close(); } catch(BaseErrExcep& e) { e.Print(); } printf( "\n Server is closing \n" ); return WaitForInput(); }