diff --git a/src/TCP_Protocol.cpp b/src/TCP_Protocol.cpp index 913736cbbca6319d45517e70b3b4c4e14154a842..004b71a0596ce5de70432e65cba019e133e5c283 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;