This commit is contained in:
Ivanov Matvey 2025-01-14 09:49:18 +10:00
parent 816fcf8833
commit 69efe70d78
3 changed files with 32 additions and 41 deletions

View File

@ -1,8 +1,6 @@
#include "socket_up.h" #include "socket_up.h"
#include "socket_handler.h" #include "socket_handler.h"
const int BUFFER_SIZE = 2048;
int main() { int main() {
#ifdef _WIN32 #ifdef _WIN32
SOCKET listen_socket = SocketUp::config_socket_windows(); SOCKET listen_socket = SocketUp::config_socket_windows();

View File

@ -10,10 +10,10 @@ const int BUFFER_SIZE = 4096;
int SocketHandler::working_with_client_windows(SOCKET listen_socket) { int SocketHandler::working_with_client_windows(SOCKET listen_socket) {
while (1) { while (1) {
// 6. Принятие входящего соединения // 6. Принятие входящего соединения
sockaddr_in clientAddr; sockaddr_in client_addr;
int clientAddrSize = sizeof(clientAddr); int client_addr_size = sizeof(client_addr);
SOCKET clientSocket = accept(listen_socket, (struct sockaddr*)&clientAddr, &clientAddrSize); SOCKET client_socket = accept(listen_socket, (struct sockaddr*)&client_addr, &client_addr_size);
if (clientSocket == INVALID_SOCKET) { if (client_socket == INVALID_SOCKET) {
std::cerr << "Accept failed with error: " << WSAGetLastError() << "\n"; std::cerr << "Accept failed with error: " << WSAGetLastError() << "\n";
continue; continue;
} }
@ -21,9 +21,9 @@ int SocketHandler::working_with_client_windows(SOCKET listen_socket) {
// 7. получение данных от юзера // 7. получение данных от юзера
char buffer[BUFFER_SIZE] = {0}; char buffer[BUFFER_SIZE] = {0};
int bytesReceived = recv(clientSocket, buffer, BUFFER_SIZE, 0); int bytes_received = recv(client_socket, buffer, BUFFER_SIZE, 0);
if (bytesReceived > 0) { if (bytes_received > 0) {
std::string request(buffer, bytesReceived); std::string request(buffer, bytes_received);
std::cout << "Received request:\n" << request << "\n"; std::cout << "Received request:\n" << request << "\n";
// Обработка запроса // Обработка запроса
@ -31,9 +31,9 @@ int SocketHandler::working_with_client_windows(SOCKET listen_socket) {
std::cout << "Response:\n" << response << "\n\n"; std::cout << "Response:\n" << response << "\n\n";
// Отправка ответа // Отправка ответа
send(clientSocket, response.c_str(), response.size(), 0); send(client_socket, response.c_str(), response.size(), 0);
} }
closesocket(clientSocket); closesocket(client_socket);
} }
return 0; return 0;
} }
@ -44,10 +44,10 @@ int SocketHandler::working_with_client_windows(SOCKET listen_socket) {
int SocketHandler::working_with_client_unix(int listen_socket) { int SocketHandler::working_with_client_unix(int listen_socket) {
while (1) { while (1) {
// Принятие соединения // Принятие соединения
sockaddr_in clientAddr; sockaddr_in client_addr;
socklen_t clientAddrSize = sizeof(clientAddr); socklen_t client_addr_size = sizeof(client_addr);
int clientSocket = accept(listen_socket, (struct sockaddr*)&clientAddr, &clientAddrSize); int client_socket = accept(listen_socket, (struct sockaddr*)&client_addr, &client_addr_size);
if (clientSocket == -1) { if (client_socket == -1) {
perror("Accept failed"); perror("Accept failed");
continue; continue;
} }
@ -55,18 +55,18 @@ int SocketHandler::working_with_client_unix(int listen_socket) {
// Чтение данных // Чтение данных
char buffer[BUFFER_SIZE] = {0}; char buffer[BUFFER_SIZE] = {0};
ssize_t bytesReceived = read(clientSocket, buffer, BUFFER_SIZE); ssize_t bytes_received = read(client_socket, buffer, BUFFER_SIZE);
if (bytesReceived > 0) { if (bytes_received > 0) {
std::string request(buffer, bytesReceived); std::string request(buffer, bytes_received);
std::cout << "Received request:\n" << request << "\n"; std::cout << "Received request:\n" << request << "\n";
std::string response = RouteHandler::get_response_by_request(request); std::string response = RouteHandler::get_response_by_request(request);
std::cout << "Response:\n" << response << "\n\n"; std::cout << "Response:\n" << response << "\n\n";
// Отправка ответа // Отправка ответа
send(clientSocket, response.c_str(), response.size(), 0); send(client_socket, response.c_str(), response.size(), 0);
} }
close(clientSocket); close(client_socket);
} }
} }

View File

@ -8,8 +8,8 @@
SOCKET SocketUp::config_socket_windows() { SOCKET SocketUp::config_socket_windows() {
// 1. Инициализация Winsock // 1. Инициализация Winsock
WSADATA wsaData; WSADATA wsa_data;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { if (WSAStartup(MAKEWORD(2, 2), &wsa_data) != 0) {
std::cerr << "WSAStartup failed with error: " << WSAGetLastError() << "\n"; std::cerr << "WSAStartup failed with error: " << WSAGetLastError() << "\n";
return 1; return 1;
} }
@ -23,14 +23,14 @@ SOCKET SocketUp::config_socket_windows() {
} }
// 3. Настройка адреса сокета // 3. Настройка адреса сокета
sockaddr_in serverAddr; sockaddr_in server_addr;
memset(&serverAddr, 0, sizeof(serverAddr)); memset(&server_addr, 0, sizeof(server_addr));
serverAddr.sin_family = AF_INET; server_addr.sin_family = AF_INET;
serverAddr.sin_port = htons(8080); // Порт для привязки server_addr.sin_port = htons(8080); // Порт для привязки
serverAddr.sin_addr.s_addr = INADDR_ANY; // Привязка к любому интерфейсу server_addr.sin_addr.s_addr = INADDR_ANY; // Привязка к любому интерфейсу
// 4. Привязка сокета к адресу // 4. Привязка сокета к адресу
if (bind(listen_socket, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) == SOCKET_ERROR) { if (bind(listen_socket, (struct sockaddr*)&server_addr, sizeof(server_addr)) == SOCKET_ERROR) {
std::cerr << "Bind failed with error: " << WSAGetLastError() << "\n"; std::cerr << "Bind failed with error: " << WSAGetLastError() << "\n";
closesocket(listen_socket); closesocket(listen_socket);
WSACleanup(); WSACleanup();
@ -48,13 +48,6 @@ SOCKET SocketUp::config_socket_windows() {
return listen_socket; return listen_socket;
// 8. Закрытие клиентского сокета
// closesocket(clientSocket);
// // 9. Закрытие серверного сокета и завершение Winsock
// closesocket(listen_socket);
// WSACleanup();
return 0; return 0;
} }
@ -68,13 +61,13 @@ int SocketUp::config_socket_unix() {
} }
sockaddr_in serverAddr; sockaddr_in server_addr;
memset(&serverAddr, 0, sizeof(serverAddr)); memset(&server_addr, 0, sizeof(server_addr));
serverAddr.sin_family = AF_INET; server_addr.sin_family = AF_INET;
serverAddr.sin_port = htons(8080); // Порт для привязки server_addr.sin_port = htons(8080); // Порт для привязки
serverAddr.sin_addr.s_addr = INADDR_ANY; // Привязка к любому интерфейсу server_addr.sin_addr.s_addr = INADDR_ANY; // Привязка к любому интерфейсу
if (bind(server_socket, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) == -1) { if (bind(server_socket, (struct sockaddr*)&server_addr, sizeof(server_addr)) == -1) {
perror("Bind failed"); perror("Bind failed");
close(server_socket); close(server_socket);
return 1; return 1;