Skip to content

Instantly share code, notes, and snippets.

@Vitka999
Created February 26, 2026 10:39
Show Gist options
  • Select an option

  • Save Vitka999/48006ab24aa7991c85740a9bc1528779 to your computer and use it in GitHub Desktop.

Select an option

Save Vitka999/48006ab24aa7991c85740a9bc1528779 to your computer and use it in GitHub Desktop.
C++(сокеты)
#define _WIN32_WINNT 0x0601
#include <winsock2.h>
#include <ws2tcpip.h>
#include <iostream>
#include <string>
#include <thread>
#pragma comment(lib, "ws2_32.lib")
using namespace std;
void receive_thread(SOCKET sock)
{
char buffer[1024];
while (true)
{
int bytes = recv(sock, buffer, sizeof(buffer), 0);
if (bytes <= 0)
break;
cout << string(buffer, bytes);
}
}
int main()
{
WSADATA wsa;
WSAStartup(MAKEWORD(2, 2), &wsa);
SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);
sockaddr_in server;
server.sin_family = AF_INET;
server.sin_port = htons(54000);
inet_pton(AF_INET, "127.0.0.1", &server.sin_addr);
connect(sock, (sockaddr*)&server, sizeof(server));
thread(receive_thread, sock).detach();
cout << "Commands:\n";
cout << "time\n";
cout << "date\n";
cout << "weather Oдесса\n";
cout << "euro\n";
cout << "bitcoin\n\n";
string command;
while (true)
{
getline(cin, command);
send(sock, command.c_str(), command.size(), 0);
}
closesocket(sock);
WSACleanup();
return 0;
}
#define _WIN32_WINNT 0x0601
#include <winsock2.h>
#include <ws2tcpip.h>
#include <windows.h>
#include <iostream>
#include <thread>
#include <string>
#include <ctime>
#pragma comment(lib, "ws2_32.lib")
using namespace std;
void send_string(SOCKET client, const string& text)
{
send(client, text.c_str(), text.size(), 0);
}
void handle_request(SOCKET client, string request)
{
if (request == "time")
{
time_t now = time(0);
tm local;
localtime_s(&local, &now);
char buffer[64];
strftime(buffer, sizeof(buffer), "Time: %H:%M:%S\n", &local);
send_string(client, buffer);
}
else if (request == "date")
{
time_t now = time(0);
tm local;
localtime_s(&local, &now);
char buffer[64];
strftime(buffer, sizeof(buffer), "Date: %Y-%m-%d\n", &local);
send_string(client, buffer);
}
else if (request.rfind("weather ", 0) == 0)
{
string city = request.substr(8);
string response = "Weather in " + city + ": +10C, cloudy\n";
send_string(client, response);
}
else if (request == "euro")
{
send_string(client, "EUR rate: 42.50 UAH\n");
}
else if (request == "bitcoin")
{
send_string(client, "BTC rate: 60000 USD\n");
}
else
{
send_string(client, "Unknown command\n");
}
}
void client_thread(SOCKET client)
{
char buffer[1024];
while (true)
{
int bytes = recv(client, buffer, sizeof(buffer), 0);
if (bytes <= 0)
break;
string request(buffer, bytes);
handle_request(client, request);
}
closesocket(client);
}
int main()
{
WSADATA wsa;
WSAStartup(MAKEWORD(2, 2), &wsa);
SOCKET server_socket = socket(AF_INET, SOCK_STREAM, 0);
sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(54000);
server_addr.sin_addr.s_addr = INADDR_ANY;
bind(server_socket, (sockaddr*)&server_addr, sizeof(server_addr));
listen(server_socket, SOMAXCONN);
cout << "Server started...\n";
while (true)
{
SOCKET client = accept(server_socket, NULL, NULL);
thread(client_thread, client).detach();
}
closesocket(server_socket);
WSACleanup();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment