initial commit

This commit is contained in:
ackimixs
2024-03-21 21:27:39 +01:00
commit a2116fd143
8 changed files with 224 additions and 0 deletions

66
src/TCPClient.cpp Normal file
View File

@@ -0,0 +1,66 @@
#include "TCPSocket/TCPClient.hpp"
TCPClient::TCPClient(const char* serverIP, int port/*, void (*callback)(const std::string& message)*/) : running(true)/*, callback(callback)*/ {
clientSocket = socket(AF_INET, SOCK_STREAM, 0);
if (clientSocket == -1) {
std::cerr << "Socket creation failed" << std::endl;
exit(EXIT_FAILURE);
}
serverAddress.sin_family = AF_INET;
serverAddress.sin_port = htons(port);
if (inet_pton(AF_INET, serverIP, &serverAddress.sin_addr) <= 0) {
std::cerr << "Invalid address or address not supported" << std::endl;
exit(EXIT_FAILURE);
}
if (connect(clientSocket, (struct sockaddr*)&serverAddress, sizeof(serverAddress)) == -1) {
std::cerr << "Connection failed" << std::endl;
exit(EXIT_FAILURE);
}
}
void TCPClient::sendMessage(const char* message) {
send(clientSocket, message, strlen(message), 0);
}
void TCPClient::receiveMessages() {
char buffer[1024] = {0};
while (running) {
ssize_t valread = recv(clientSocket, buffer, sizeof(buffer), 0);
if (valread > 0) {
handleMessage(buffer);
memset(buffer, 0, sizeof(buffer)); // Clear buffer
} else if (valread == 0) {
std::cerr << "Connection closed by server" << std::endl;
break;
} else {
std::cerr << "Error in receiving message" << std::endl;
break;
}
}
running = false;
}
void TCPClient::handleMessage(const std::string& message) {
std::cout << message << std::endl;
}
TCPClient::~TCPClient() {
stop();
}
void TCPClient::start() {
std::thread receiveThread(&TCPClient::receiveMessages, this);
receiveThread.detach();
}
void TCPClient::stop() {
running = false;
close(clientSocket);
}
/*void TCPClient::setCallback(void (*callback)(const std::string& message)) {
this->callback = callback;
}*/