From d5407138f208c694ccd68df01f3da1648e02d5f5 Mon Sep 17 00:00:00 2001 From: Sam Hos Date: Wed, 25 Sep 2024 15:02:41 +0200 Subject: [PATCH] Made cpp into client instead of server --- src/C++/Socket/main.cpp | 65 +++++++++++++++++++++++++++-------------- 1 file changed, 43 insertions(+), 22 deletions(-) diff --git a/src/C++/Socket/main.cpp b/src/C++/Socket/main.cpp index 2d36667..2ccb171 100644 --- a/src/C++/Socket/main.cpp +++ b/src/C++/Socket/main.cpp @@ -1,33 +1,54 @@ -#include #include -#include -#include -#include +#include +#include -int serverSocket = socket(AF_INET, SOCK_STREAM, 0); +using boost::asio::ip::tcp; -using namespace std; +int main() { + try { + // Object creation + boost::asio::io_context io_context; -int main() -{ - sockaddr_in serverAddress; - serverAddress.sin_family = AF_INET; - serverAddress.sin_port = htons(4204); - serverAddress.sin_addr.s_addr = INADDR_ANY; + // Resolve the server address and port + tcp::resolver resolver(io_context); + tcp::resolver::results_type endpoints = resolver.resolve("127.0.0.1", "4024"); - bind(serverSocket, (struct sockaddr *)&serverAddress, sizeof(serverAddress)); + // Create and connect the socket + tcp::socket socket(io_context); + boost::asio::connect(socket, endpoints); - listen(serverSocket, 5); + std::cout << "Connected to the server." << std::endl; - int clientSocket = accept(serverSocket, nullptr, nullptr); + // Receive initial message from the server + boost::asio::streambuf buffer; + boost::asio::read_until(socket, buffer, "\n"); + std::istream is(&buffer); + std::string initial_message; + std::getline(is, initial_message); + std::cout << "Initial message from server: " << initial_message << std::endl; - char buffer[1024] = {0}; - recv(clientSocket, buffer, sizeof(buffer), 0); - cout << "Message from client: " << buffer << endl; + // Send and receive messages + while (true) { + // Send a message to the server + std::string message; + std::cout << "Enter message: "; + //read directly from the console and feed with cin to the message variable + std::getline(std::cin, message); + message += "\n"; // Add newline to mark the end of the message + boost::asio::write(socket, boost::asio::buffer(message)); + // Receive a response from the server + boost::asio::streambuf response_buffer; + boost::asio::read_until(socket, response_buffer, "\n"); + std::istream response_stream(&response_buffer); + std::string reply; + std::getline(response_stream, reply); + std::cout << "Reply from server: " << reply << std::endl; + } + + } catch (std::exception& e) { + std::cerr << "Exception: " << e.what() << std::endl; + } - close(serverSocket); return 0; -} - -// https://www.geeksforgeeks.org/socket-programming-in-cpp/ \ No newline at end of file +} \ No newline at end of file