Skip to content

Instantly share code, notes, and snippets.

@vlaleli
Created February 12, 2026 18:36
Show Gist options
  • Select an option

  • Save vlaleli/aa9c58798a5b2741eb629f7b0f79c6bd to your computer and use it in GitHub Desktop.

Select an option

Save vlaleli/aa9c58798a5b2741eb629f7b0f79c6bd to your computer and use it in GitHub Desktop.
#include <iostream>
#include <string>
#include <cstring>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <unistd.h>
int main() {
int clientSocket = socket(AF_INET, SOCK_STREAM, 0);
if (clientSocket < 0) {
std::cout << "socket() failed\n";
return 1;
}
sockaddr_in serverAddr{};
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(5555);
inet_pton(AF_INET, "127.0.0.1", &serverAddr.sin_addr);
if (connect(clientSocket, (sockaddr*)&serverAddr, sizeof(serverAddr)) < 0) {
std::cout << "connect() failed (server running?)\n";
close(clientSocket);
return 1;
}
std::cout << "Connected to server.\n";
std::cout << "Type: як справи / котра година / exit\n\n";
while (true) {
std::cout << "You: ";
std::string text;
std::getline(std::cin, text);
std::string out = text + "\n";
send(clientSocket, out.c_str(), out.size(), 0);
char buffer[1024];
std::memset(buffer, 0, sizeof(buffer));
ssize_t bytes = recv(clientSocket, buffer, sizeof(buffer) - 1, 0);
if (bytes <= 0) {
std::cout << "Server disconnected\n";
break;
}
std::string answer(buffer);
while (!answer.empty() && (answer.back() == '\n' || answer.back() == '\r')) {
answer.pop_back();
}
std::cout << "Server: " << answer << "\n\n";
if (text == "exit") {
break;
}
}
close(clientSocket);
return 0;
}
#include <iostream>
#include <string>
#include <cstring>
#include <ctime>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
int main() {
int serverSocket = socket(AF_INET, SOCK_STREAM, 0);
if (serverSocket < 0) {
std::cout << "socket() failed\n";
return 1;
}
int opt = 1;
setsockopt(serverSocket, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
sockaddr_in serverAddr{};
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(5555);
serverAddr.sin_addr.s_addr = INADDR_ANY;
if (bind(serverSocket, (sockaddr*)&serverAddr, sizeof(serverAddr)) < 0) {
std::cout << "bind() failed\n";
close(serverSocket);
return 1;
}
if (listen(serverSocket, 5) < 0) {
std::cout << "listen() failed\n";
close(serverSocket);
return 1;
}
std::cout << "Server listening on port 5555...\n";
std::cout << "Waiting for client...\n";
sockaddr_in clientAddr{};
socklen_t clientSize = sizeof(clientAddr);
int clientSocket = accept(serverSocket, (sockaddr*)&clientAddr, &clientSize);
if (clientSocket < 0) {
std::cout << "accept() failed\n";
close(serverSocket);
return 1;
}
std::cout << "Client connected!\n";
char buffer[1024];
while (true) {
std::memset(buffer, 0, sizeof(buffer));
ssize_t bytes = recv(clientSocket, buffer, sizeof(buffer) - 1, 0);
if (bytes <= 0) {
std::cout << "Client disconnected\n";
break;
}
std::string msg(buffer);
while (!msg.empty() && (msg.back() == '\n' || msg.back() == '\r')) {
msg.pop_back();
}
std::cout << "Client: " << msg << "\n";
std::string answer;
if (msg == "exit") {
answer = "bye";
std::string out = answer + "\n";
send(clientSocket, out.c_str(), out.size(), 0);
break;
}
else if (msg == "як справи" || msg == "як справи?") {
answer = "чудово";
}
else if (msg == "котра година" || msg == "котра година?") {
std::time_t t = std::time(nullptr);
std::tm lt{};
localtime_r(&t, &lt);
char timeBuf[6];
std::snprintf(timeBuf, sizeof(timeBuf), "%02d:%02d", lt.tm_hour, lt.tm_min);
answer = timeBuf;
}
else {
answer = "не розумію";
}
std::string out = answer + "\n";
send(clientSocket, out.c_str(), out.size(), 0);
}
close(clientSocket);
close(serverSocket);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment