Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save nicolekorch/1298ddee96f2138bc0d9bd251e5c1965 to your computer and use it in GitHub Desktop.

Select an option

Save nicolekorch/1298ddee96f2138bc0d9bd251e5c1965 to your computer and use it in GitHub Desktop.
#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);
}
@nicolekorch
Copy link
Author

server/client

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment