Created
February 26, 2026 10:39
-
-
Save Vitka999/48006ab24aa7991c85740a9bc1528779 to your computer and use it in GitHub Desktop.
C++(сокеты)
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
| #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; | |
| } |
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
| #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