SOCKET MasterSocket; SOCKET TheClient; SOCKET m_backup; WSADATA wsaData; sockaddr_in con; // ------- Make sure you call this function before the others ------------------ int WSInit() // initalizes winsock { int iResult = WSAStartup(MAKEWORD(2,2), &wsaData); if (iResult != NO_ERROR ) { WSACleanup(); return 0; } MasterSocket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); if ( MasterSocket == INVALID_SOCKET ) { WSACleanup(); return 0; } m_backup = MasterSocket; } // Starts a server int startAsServer(int PORT) { con.sin_family = AF_INET; con.sin_addr.s_addr = inet_addr( "0.0.0.0" ); con.sin_port = htons(PORT); if (bind(MasterSocket,(SOCKADDR*) (&con), sizeof(con) ) == SOCKET_ERROR) { closesocket(MasterSocket); WSACleanup(); return 0; } if (listen( MasterSocket, 1 ) == SOCKET_ERROR ) { closesocket(MasterSocket); WSACleanup(); return 0; } } void waitForClient() { TheClient = SOCKET_ERROR; while ( TheClient == SOCKET_ERROR ) { Sleep(150); TheClient = accept( m_backup, NULL, NULL ); } MasterSocket = TheClient; } // Call this function after you've created a client\server, like this "SOCKET mySocket = SetDataTransferSocket();" SOCKET SetDataTransferSocket() { return TheClient; } // be sure you call this function before you close your app or when you want to dissconnect void Dissconnect(SOCKET socketToDissconnect) { closesocket(TheClient); closesocket(m_backup); closesocket(MasterSocket); closesocket(socketToDissconnect); WSACleanup(); }