#include "SocketClient.h" #include #include #include using namespace std; namespace exploringBB { SocketClient::SocketClient(std::string serverName, int portNumber) { this->socketfd = -1; this->server = NULL; this->serverName = serverName; this->portNumber = portNumber; this->isConnected = false; } int SocketClient::connectToServer(){ socketfd = socket(AF_INET, SOCK_STREAM, 0); if (socketfd < 0){ perror("Socket Client: error opening socket.\n"); return 1; } server = gethostbyname(serverName.data()); if (server == NULL) { perror("Socket Client: error - no such host.\n"); return 1; } bzero((char *) &serverAddress, sizeof(serverAddress)); serverAddress.sin_family = AF_INET; bcopy((char *)server->h_addr,(char *)&serverAddress.sin_addr.s_addr, server->h_length); serverAddress.sin_port = htons(portNumber); if (connect(socketfd, (struct sockaddr *) &serverAddress, sizeof(serverAddress)) < 0){ perror("Socket Client: error connecting to the server.\n"); return 1; } this->isConnected = true; return 0; } int SocketClient::send(std::string message){ const char *writeBuffer = message.data(); int length = message.length(); int n = write(this->socketfd, writeBuffer, length); if (n < 0){ perror("Socket Client: error writing to socket"); return 1; } return 0; } string SocketClient::receive(int size=1024){ char readBuffer[size]; int n = read(this->socketfd, readBuffer, sizeof(readBuffer)); if (n < 0){ perror("Socket Client: error reading from socket"); } return string(readBuffer); } int SocketClient::disconnectFromServer(){ this->isConnected = false; close(this->socketfd); return 0; } SocketClient::~SocketClient() { if (this->isConnected == true){ disconnectFromServer(); } } }