void ServerTCP() { TcpListenSocket listen; TcpServer server; Packet data; string source; data.SetByteOrder(CX_PACKET_BIG_ENDIAN); // Tests non-blocking TCP connections. If listen socket is non-blocking // then all TCP connections generated will be non-blocking. if(!listen.InitializeSocket(PORT, 5U, 0U, 0U, 1, 1)) { cout << "Unable to initialize listen socket on port " << PORT << endl; return; } cout << "Initialized TCP Listen Socket\n"; cout << "Waiting for a connection.... "; while( true ) { if(listen.AwaitConnection(server)) { cout << "Connection Made!\n"; while(true) { if(server.Recv(data, 50, 0) > 0) // Receive up to 50 bytes to packet. { cout << "Received: "; char val; while(data.Read(val)) { cout << val; server.Send(data); } cout << endl; } CxUtils::SleepMs(1); } cout << "Connection Closed.\n"; } SleepMs(1); } }
void FakeGPS() { TcpListenSocket listen; TcpServer connection; Packet data; string source; if(!listen.InitializeSocket(PORT)) { cout << "Unable to initialize listen socket on port " << PORT << endl; return; } cout << "Initialized TCP Listen Socket\n"; cout << "Waiting for a connection.... "; bool quitFlag = false; while( listen.AwaitConnection(connection) && !quitFlag) { cout << "Connection Made!\n"; std::stringstream str; Time t; while(!quitFlag) { // Clear string. str.clear(); str.str(std::string()); // Set position data and message type. str << "$GPGLL,4916.45,N,12311.12,W,"; // Get the current time. t.SetCurrentTime(); str << t.mHour << t.mMinute << "." << t.mSecond; str << ",A"; // Now calculate the checksum. unsigned char checkSum = 0; // Don't include the '$' character, but go to end. for(unsigned int i = 1; i < (unsigned int)str.str().size(); i++) { if(i == 1) { checkSum = str.str().c_str()[i]; } else { checkSum ^= str.str().c_str()[i]; } } // Now add the checksum to the string. str << "*" << std::hex << std::uppercase << (int) checkSum; // Print to screen. std::cout << str.str() << std::endl; // Now send the data. if(connection.Send(str.str().c_str(), (unsigned int)str.str().length()) <= 0) { // Failed to send, connection must be closed. break; } // Check for exit by user. if(GetChar() == 27) { quitFlag = true; } SleepMs(250); } cout << "Connection Closed.\n"; connection.Shutdown(); } }