From 28322d4950ba1a63d98dcf89f0a77dc5b09e770d Mon Sep 17 00:00:00 2001 From: valerio Date: Tue, 18 Apr 2023 11:29:22 +0200 Subject: [PATCH] connection managment fix --- src/TCP_Protocol.cpp | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/TCP_Protocol.cpp b/src/TCP_Protocol.cpp index 913736c..004b71a 100755 --- a/src/TCP_Protocol.cpp +++ b/src/TCP_Protocol.cpp @@ -36,9 +36,17 @@ int TCPProtocol::sendToServer(PacketLib::BasePacket &pack) { return val; } int TCPProtocol::receiveFromClient(PacketLib::BasePacket &pack) { - size_t headerSize = pack.getHeaderSize(); + ssize_t headerSize = pack.getHeaderSize(); uint8_t *buff = new uint8_t[pack.getPacketStructureByteSize()]; - size_t rec = ::recv(this->srv_sock, &buff[0], headerSize,0); + ssize_t rec = ::recv(this->srv_sock, &buff[0], headerSize,0); + if(rec == 0){ // connessione chiusa TODO + ::close(srv_sock); + ::close(cli_sock); + srv_sock = -1; + cli_sock = -1; + delete buff; + return 0; + } if(rec != headerSize){ delete buff; return -1; @@ -86,18 +94,20 @@ int TCPProtocol::closeConnectionToServer() { } bool TCPProtocol::isConnectedToClient() const { - return srv_sock != -1; + return srv_sock > 0; } bool TCPProtocol::isConnectedToServer() const { - return cli_sock != -1; + return cli_sock > 0; } int TCPProtocol::m_connectToCli(std::string ip, int port) { std::cout << "Listening on: " << ip << ":" << port << std::endl; // Creating socket file descriptor - if ((srv_sock = socket(AF_INET, SOCK_STREAM, 0)) == 0) { - perror("socket failed"); - return -1; + if(srv_sock == -1){ + if ((srv_sock = socket(AF_INET, SOCK_STREAM, 0)) == 0) { + perror("socket failed"); + return -1; + } } struct sockaddr_in servaddr; servaddr.sin_family = AF_INET; -- GitLab