diff --git a/server.cpp b/server.cpp new file mode 100644 index 0000000..f0b2fd5 --- /dev/null +++ b/server.cpp @@ -0,0 +1,56 @@ +#include +#include +#include +#include +#include + +using namespace std; + +int main() { + // здесь создаем сокет и выводим ошибку, если не удалось это сделать + int serverSocket = socket(AF_INET, SOCK_STREAM, 0); + if (serverSocket == -1) { + cerr << "Ошибка при создании сокета\n"; + return -1; + } + + // задание адреса сервера. Используем порт 8080 и слушаем на всех //адресах( 0.0.0.0 ) + sockaddr_in serverAddress; + serverAddress.sin_family = AF_INET; + serverAddress.sin_port = htons(8080); + serverAddress.sin_addr.s_addr = INADDR_ANY; + + // связываем серверный сокет + if (bind(serverSocket, (struct sockaddr*)&serverAddress, sizeof(serverAddress)) == -1) { + cerr << "Ошибка при привязке сокета\n"; + close(serverSocket); + return -1; + } + + // слушаем на порту новые подключения + if (listen(serverSocket, 5) == -1) { + cerr << "Ошибка при прослушивании\n"; + close(serverSocket); + return -1; + } + cout << "Сервер ожидает подключения...\n"; + + // принимаем подключение клиента + int clientSocket = accept(serverSocket, nullptr, nullptr); + if (clientSocket == -1) { + cerr << "Ошибка при принятии подключения\n"; + close(serverSocket); + return -1; + } + + cout << "Клиент подключен!\n"; + + // получаем данные от клиента + char buffer[1024] = {0}; + recv(clientSocket, buffer, sizeof(buffer), 0); + cout << "Сообщение от клиента: " << buffer << endl; + + close(clientSocket); + close(serverSocket); + return 0; +} \ No newline at end of file