#include "socket_up.h" #ifdef _WIN32 // // Линковка библиотеки Winsock // #pragma comment(lib, "ws2_32.lib") // don't need but I think may shoot SOCKET SocketUp::config_socket_windows() { // 1. Инициализация Winsock WSADATA wsa_data; if (WSAStartup(MAKEWORD(2, 2), &wsa_data) != 0) { std::cerr << "WSAStartup failed with error: " << WSAGetLastError() << "\n"; return 1; } // 2. Создание сокета SOCKET listen_socket = socket(AF_INET, SOCK_STREAM, 0); if (listen_socket == INVALID_SOCKET) { std::cerr << "Socket creation failed with error: " << WSAGetLastError() << "\n"; WSACleanup(); return 1; } // 3. Настройка адреса сокета sockaddr_in server_addr; memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(8080); // Порт для привязки server_addr.sin_addr.s_addr = INADDR_ANY; // Привязка к любому интерфейсу // 4. Привязка сокета к адресу if (bind(listen_socket, (struct sockaddr*)&server_addr, sizeof(server_addr)) == SOCKET_ERROR) { std::cerr << "Bind failed with error: " << WSAGetLastError() << "\n"; closesocket(listen_socket); WSACleanup(); return 1; } // 5. Перевод сокета в режим прослушивания if (listen(listen_socket, SOMAXCONN) == SOCKET_ERROR) { std::cerr << "Listen failed with error: " << WSAGetLastError() << "\n"; closesocket(listen_socket); WSACleanup(); return 1; } std::cout << "Server is listening on port 8080...\n"; return listen_socket; return 0; } #else int SocketUp::config_socket_unix() { int server_socket = socket(AF_INET, SOCK_STREAM, 0); if (server_socket == -1) { perror("server socket can't be created"); return 1; } sockaddr_in server_addr; memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(8080); // Порт для привязки server_addr.sin_addr.s_addr = INADDR_ANY; // Привязка к любому интерфейсу if (bind(server_socket, (struct sockaddr*)&server_addr, sizeof(server_addr)) == -1) { perror("Bind failed"); close(server_socket); return 1; } if (listen(server_socket, SOMAXCONN) == -1) { perror("Listen failed"); close(server_socket); return 1; } std::cout << "Server is listening on port 8080...\n"; return server_socket; } #endif