Created
March 5, 2026 07:46
-
-
Save nicolekorch/1298ddee96f2138bc0d9bd251e5c1965 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include <iostream> | |
| #include <string> | |
| #include <algorithm> | |
| #include <winsock2.h> | |
| #pragma comment(lib, "ws2_32.lib") | |
| class StringServer { | |
| private: | |
| int port; | |
| public: | |
| StringServer(int p) : port(p) {} | |
| std::string reverseString(const std::string& str) { | |
| std::string reversed = str; | |
| std::reverse(reversed.begin(), reversed.end()); | |
| return reversed; | |
| } | |
| void start() { | |
| WSADATA wsData; | |
| WSAStartup(MAKEWORD(2,2), &wsData); | |
| SOCKET serverSocket = socket(AF_INET, SOCK_STREAM, 0); | |
| sockaddr_in serverAddr{}; | |
| serverAddr.sin_family = AF_INET; | |
| serverAddr.sin_port = htons(port); | |
| serverAddr.sin_addr.s_addr = INADDR_ANY; | |
| bind(serverSocket, (sockaddr*)&serverAddr, sizeof(serverAddr)); | |
| listen(serverSocket, 1); | |
| SOCKET clientSocket = accept(serverSocket, NULL, NULL); | |
| char buffer[1024]; | |
| int bytesReceived = recv(clientSocket, buffer, 1024, 0); | |
| std::string received(buffer, bytesReceived); | |
| std::string reversed = reverseString(received); | |
| send(clientSocket, reversed.c_str(), reversed.size(), 0); | |
| closesocket(clientSocket); | |
| closesocket(serverSocket); | |
| WSACleanup(); | |
| } | |
| }; | |
| int main() { | |
| StringServer server(54000); | |
| server.start(); | |
| } | |
| #include <iostream> | |
| #include <string> | |
| #include <winsock2.h> | |
| #pragma comment(lib, "ws2_32.lib") | |
| class StringClient { | |
| private: | |
| std::string host; | |
| int port; | |
| public: | |
| StringClient(std::string h, int p) : host(h), port(p) {} | |
| void sendString(const std::string& text) { | |
| WSADATA wsData; | |
| WSAStartup(MAKEWORD(2,2), &wsData); | |
| SOCKET sock = socket(AF_INET, SOCK_STREAM, 0); | |
| sockaddr_in serverAddr{}; | |
| serverAddr.sin_family = AF_INET; | |
| serverAddr.sin_port = htons(port); | |
| serverAddr.sin_addr.s_addr = inet_addr(host.c_str()); | |
| connect(sock, (sockaddr*)&serverAddr, sizeof(serverAddr)); | |
| send(sock, text.c_str(), text.size(), 0); | |
| char buffer[1024]; | |
| int bytesReceived = recv(sock, buffer, 1024, 0); | |
| std::cout << "Reversed: " << std::string(buffer, bytesReceived) << std::endl; | |
| closesocket(sock); | |
| WSACleanup(); | |
| } | |
| }; | |
| int main() { | |
| StringClient client("127.0.0.1", 54000); | |
| std::string input; | |
| std::cout << "Enter string: "; | |
| std::getline(std::cin, input); | |
| client.sendString(input); | |
| } |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
server/client