commit 4e49f51f357430a46fe1947b3b7703dee86a2036 Author: ackimixs Date: Wed Mar 20 20:06:34 2024 +0100 Initial commit diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..ee95cff --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,12 @@ +cmake_minimum_required(VERSION 3.28) +project(socketServer) + +set(CMAKE_CXX_STANDARD 17) + +find_package(PkgConfig REQUIRED) +pkg_check_modules(TCPSocket REQUIRED TCPSocket) + +add_executable(socketServer main.cpp + ModelecServer.cpp + ModelecServer.h) +target_link_libraries(socketServer TCPSocket) diff --git a/ModelecServer.cpp b/ModelecServer.cpp new file mode 100644 index 0000000..5b69a03 --- /dev/null +++ b/ModelecServer.cpp @@ -0,0 +1,22 @@ +#include "ModelecServer.h" + +ModelecServer::ModelecServer(int port) : TCPServer(port) +{ + +} + +void ModelecServer::handleMessage(const std::string& message, int clientSocket) +{ + if (startWith(message, "request robotPos")) + { + this->broadcastMessage("robotPos 25 24 23 2"); + } + else if (startWith(message, "pong")) + { + std::string name = split(message, " ")[1]; + std::cout << "Pong from " << name << std::endl; + } else + { + std::cout << message << std::endl; + } +} diff --git a/ModelecServer.h b/ModelecServer.h new file mode 100644 index 0000000..0c713d6 --- /dev/null +++ b/ModelecServer.h @@ -0,0 +1,11 @@ +#pragma once + +#include + +class ModelecServer : public TCPServer { + +public: + ModelecServer(int port); + + void handleMessage(const std::string& message, int clientSocket) override; +}; diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..7124db6 --- /dev/null +++ b/main.cpp @@ -0,0 +1,36 @@ +#include +#include + +#include + +std::atomic keepRunning(true); + +void signalHandler(int signum) { + std::cout << "Interrupt signal (" << signum << ") received.\n"; + keepRunning = false; +} + +int main() { + signal(SIGTERM, signalHandler); + signal(SIGINT, signalHandler); + + TCPServer server(8082); + + try { + server.start(); + + while (keepRunning) { + sleep(5); + + server.broadcastMessage("request aruco"); + + std::cout << "Main thread communicating with server..." << std::endl; + } + + server.stop(); + } catch (const std::exception& ex) { + std::cerr << "Error: " << ex.what() << std::endl; + return 1; + } + return 0; +} \ No newline at end of file