44 lines
2.2 KiB
C++
44 lines
2.2 KiB
C++
/*! @file client.hpp
|
|
Заголовочный файл клиента для игры в лабиринт на базе сокетов.
|
|
@author ParkSuMin
|
|
@date 2025.04.30 */
|
|
|
|
#ifndef CLIENT_HPP
|
|
#define CLIENT_HPP
|
|
|
|
#include <iostream>
|
|
#include <cstring>
|
|
#include <sys/socket.h>
|
|
#include <arpa/inet.h>
|
|
#include <unistd.h>
|
|
#include <netdb.h>
|
|
|
|
/*! Класс клиента для взаимодействия с сервером игры в лабиринт. */
|
|
class Client{
|
|
private:
|
|
int sock; ///< Сокет для соединения с сервером.
|
|
public:
|
|
/*! Конструктор по умолчанию.
|
|
@details Конструктор создаёт сокет клиента и связывает его с предоставленным операционной системой адресом. В
|
|
случае ошибки вызывает исключение.
|
|
@throw std::runtime_error При ошибке создания или связывания сокета. */
|
|
Client();
|
|
|
|
/*! Запускает клиентское приложение.
|
|
@details Устанавливает соединение с сервером по указанному хосту и порту, после чего вызывает игровой цикл.
|
|
@param host Адрес сервера (название хоста или IP-адрес).
|
|
@param port Порт сервера для подключения. */
|
|
void run(const std::string& host, const unsigned short port);
|
|
|
|
/*! Основной игровой цикл.
|
|
@details Обрабатывает ввод пользователя, отправляет команды на сервер и получает ответы. */
|
|
void game();
|
|
|
|
/*! Отправляет тестовый запрос (ping) на сервер.
|
|
@details Используется для проверки доступности сервера.
|
|
@param server_address Структура адреса сервера.
|
|
@return Целое число, указывающее результат выполнения (0 — успех, иначе — ошибка). */
|
|
int ping(struct sockaddr_in);
|
|
};
|
|
|
|
#endif |