Files
SLikeNet/Samples/CommandConsoleServer/main.cpp
2025-11-24 14:19:51 +05:30

93 lines
3.0 KiB
C++

/*
* Original work: Copyright (c) 2014, Oculus VR, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* RakNet License.txt file in the licenses directory of this source tree. An additional grant
* of patent rights can be found in the RakNet Patents.txt file in the same directory.
*
*
* Modified work: Copyright (c) 2016-2017, SLikeSoft UG (haftungsbeschränkt)
*
* This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style
* license found in the license.txt file in the root directory of this source tree.
*/
/// \file
/// \brief Test the command console implementations
#include "slikenet/TCPInterface.h"
#include "slikenet/ConsoleServer.h"
#include "slikenet/commandparser.h"
#include "slikenet/TelnetTransport.h"
#include "slikenet/peerinterface.h"
#include "slikenet/LogCommandParser.h"
#include "slikenet/GetTime.h"
#include "slikenet/transport2.h"
#include "slikenet/LinuxStrings.h"
#include <stdio.h>
void TestTCPInterface(void);
void TestCommandServer(SLNet::TransportInterface *ti, unsigned short port, SLNet::RakPeerInterface *rakPeer);
int main(void)
{
SLNet::RakPeerInterface *rakPeer = SLNet::RakPeerInterface::GetInstance();
SLNet::SocketDescriptor sd(60000,0);
rakPeer->Startup(128,&sd,1);
rakPeer->SetMaximumIncomingConnections(128);
SLNet::TelnetTransport tt;
TestCommandServer(&tt, 23, rakPeer); // Uncomment to use Telnet as a client. Telnet uses port 23 by default.
// SLNet::RakNetTransport2 rt2;
// rakPeer->AttachPlugin(&rt2);
// TestCommandServer(&rt2, 60000,rakPeer); // Uncomment to use RakNet as a client
return 1;
}
void TestCommandServer(SLNet::TransportInterface *ti, unsigned short port, SLNet::RakPeerInterface *rakPeer)
{
SLNet::ConsoleServer consoleServer;
SLNet::RakNetCommandParser rcp;
SLNet::LogCommandParser lcp;
SLNet::TimeMS lastLog=0;
printf("This sample demonstrates the command console server, which can be.\n");
printf("a standalone application or part of your game server. It allows you to\n");
printf("easily parse text strings sent from a client using either secure RakNet\n");
printf("or Telnet.\n");
printf("See the 'CommandConsoleClient' project for the RakNet client.\n");
printf("Difficulty: Intermediate\n\n");
printf("Command server started on port %i.\n", port);
consoleServer.AddCommandParser(&rcp);
consoleServer.AddCommandParser(&lcp);
consoleServer.SetTransportProvider(ti, port);
consoleServer.SetPrompt("> "); // Show this character when waiting for user input
rcp.SetRakPeerInterface(rakPeer);
lcp.AddChannel("TestChannel");
for(;;)
{
consoleServer.Update();
// Ignore raknet packets for this sample.
rakPeer->DeallocatePacket(rakPeer->Receive());
if (SLNet::GetTimeMS() > lastLog + 4000)
{
lcp.WriteLog("TestChannel", "Test of logger");
lastLog= SLNet::GetTimeMS();
}
#ifdef _WIN32
Sleep( 30 );
#else
usleep( 30 * 1000 );
#endif
}
}