From 9e4e3be6aa3a58459cc049e4fc4159dc8194e20b Mon Sep 17 00:00:00 2001 From: Maxime DE CAUMIA BAILLENX Date: Wed, 10 May 2023 16:21:58 +0200 Subject: [PATCH] Maj SocketHandler TDMA --- .../src/SocketHandler.cpp | 50 ++++++++++++------- .../src/SocketHandler.hpp | 13 +++-- .../tests/testClient.cpp | 36 ++++++++++--- .../tests/testServer.cpp | 37 ++++++++++---- 4 files changed, 95 insertions(+), 41 deletions(-) diff --git a/libs/libBoostSocketHandler/src/SocketHandler.cpp b/libs/libBoostSocketHandler/src/SocketHandler.cpp index bc6dabf..7a64c8a 100644 --- a/libs/libBoostSocketHandler/src/SocketHandler.cpp +++ b/libs/libBoostSocketHandler/src/SocketHandler.cpp @@ -25,7 +25,6 @@ Server::Server(int port) { m_port = port; m_initDone=false; - threadInit = new std::thread(&Server::initServer, this); } @@ -35,7 +34,6 @@ void Server::reset() delete m_socketTcp; m_initDone=false; - threadInit = new std::thread(&Server::initServer, this); } @@ -47,7 +45,6 @@ void Server::initServer() Server::~Server() { - threadInit->join(); delete m_socketTcp; } @@ -133,37 +130,58 @@ Client::Client(std::string& ip, int port) { m_ipServer = ip; m_port = port; - - creatClientTcp(m_port, m_ipServer); } Client::~Client() { - delete m_socketTcp; + if(m_socketTcp) + { + delete m_socketTcp; + m_socketTcp=nullptr; + } } -void Client::reset() +bool Client::reset() { if(m_socketTcp) + { delete m_socketTcp; + m_socketTcp=nullptr; + } - creatClientTcp(m_port, m_ipServer); + bool res = creatClientTcp(m_port, m_ipServer); + return res; } -void Client::creatClientTcp(int port, std::string& ip) +bool Client::initConnection() +{ + bool res = reset(); + return res; +} + + +void Client::closeConnection() +{ + if(m_socketTcp) + { + delete m_socketTcp; + m_socketTcp=nullptr; + } +} + + +bool Client::creatClientTcp(int port, std::string& ip) { boost::system::error_code error; m_socketTcp=new tcp::socket(m_ioService); m_socketTcp->connect( tcp::endpoint( boost::asio::ip::address::from_string(ip), port ), error); - while(error) - { - m_socketTcp->connect( tcp::endpoint( boost::asio::ip::address::from_string(ip), port ), error); - std::this_thread::sleep_for(std::chrono::milliseconds((int)(500))); - } + if(error) + return false; + return true; } @@ -175,7 +193,6 @@ bool Client::sendData(std::string& data) if(m_error) { // std::cerr << "send failed: " << m_error.message() << std::endl; - reset(); return false; } @@ -186,7 +203,6 @@ bool Client::sendData(std::string& data) if(m_error) { // std::cerr << "send failed: " << m_error << std::endl; - reset(); return false; } } @@ -204,7 +220,6 @@ bool Client::receive(std::string& data) if(m_error) { // std::cerr << "receive failed: " << m_error.message() << std::endl; - reset(); return false; } @@ -215,7 +230,6 @@ bool Client::receive(std::string& data) if(m_error) { // std::cerr << "receive failed: " << m_error.message() << std::endl; - reset(); return false; } } diff --git a/libs/libBoostSocketHandler/src/SocketHandler.hpp b/libs/libBoostSocketHandler/src/SocketHandler.hpp index e434d58..c15e9f2 100644 --- a/libs/libBoostSocketHandler/src/SocketHandler.hpp +++ b/libs/libBoostSocketHandler/src/SocketHandler.hpp @@ -20,19 +20,19 @@ public: Server(int port); ~Server(); + void initServer(); + bool sendData(std::string& data); bool receive(std::string& data); private: void reset(); - void initServer(); + void creatServerTcp(int port); bool m_initDone; int m_port; - std::thread* threadInit; - boost::asio::io_service m_ioService; boost::asio::ip::tcp::socket* m_socketTcp; boost::system::error_code m_error; @@ -46,12 +46,15 @@ public: Client(std::string& ip, int port); ~Client(); + bool initConnection(); + void closeConnection(); + bool sendData(std::string& data); bool receive(std::string& data); private: - void reset(); - void creatClientTcp(int port, std::string& ip); + bool reset(); + bool creatClientTcp(int port, std::string& ip); std::string m_ipServer; int m_port; diff --git a/libs/libBoostSocketHandler/tests/testClient.cpp b/libs/libBoostSocketHandler/tests/testClient.cpp index e50f898..7771e86 100644 --- a/libs/libBoostSocketHandler/tests/testClient.cpp +++ b/libs/libBoostSocketHandler/tests/testClient.cpp @@ -15,19 +15,39 @@ int main() while(1) { + std::cout << "InitConnection" << std::endl; + + while(!client->initConnection()) + { + sleep(1); + } + std::cout << "Sending" << std::endl; + string out="Hello"; - client->sendData(out); + bool res = client->sendData(out); + if(res) + { + std::cout << "Sent" << std::endl; + std::cout << "Receiving" << std::endl; - string ret; - client->receive(ret); + string ret; + res = client->receive(ret); - std::cout << "Client - " << ret << std::endl; + if(res) + { + std::cout << "Received" << std::endl; + + std::cout << "Client - " << ret << std::endl; + } + else + std::cout << "Receive failed" << std::endl; + } + else + std::cout << "Send failed" << std::endl; + + client->closeConnection(); -#ifdef __linux__ sleep(1); -#elif _WIN32 - Sleep(1); -#endif } } \ No newline at end of file diff --git a/libs/libBoostSocketHandler/tests/testServer.cpp b/libs/libBoostSocketHandler/tests/testServer.cpp index 7a03c64..6e63901 100644 --- a/libs/libBoostSocketHandler/tests/testServer.cpp +++ b/libs/libBoostSocketHandler/tests/testServer.cpp @@ -13,20 +13,37 @@ int main() while(1) { - string out="Man"; - server->sendData(out); + std::cout << "InitServer" << std::endl; + + // Wait a connection + server->initServer(); + + std::cout << "Receiving" << std::endl; string ret; - server->receive(ret); + bool res = server->receive(ret); + if(res) + { + std::cout << "Received" << std::endl; - std::cout << "Server - " << ret << std::endl; + std::cout << "Server - " << ret << std::endl; -#ifdef __linux__ - sleep(1); -#elif _WIN32 - Sleep(1); -#endif - + std::cout << "Sending" << std::endl; + + string out="{}"; + res = server->sendData(out); + if(res) + { + std::cout << "Sent" << std::endl; + } + else + std::cout << "send failed" << std::endl; + } + else + std::cout << "Receive failed" << std::endl; + } + + delete server; } \ No newline at end of file