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 |