Choose hostname and port (for server and client part)
This commit is contained in:
@@ -11,28 +11,33 @@ void print_instructions() {
|
||||
}
|
||||
|
||||
int Client::ping(struct sockaddr_in address){
|
||||
return connect(sock, (struct sockaddr*)&address, sizeof(address)) > 0;
|
||||
return connect(sock, (struct sockaddr*)&address, sizeof(address)) != 0;
|
||||
}
|
||||
|
||||
void Client::run() {
|
||||
struct sockaddr_in serv_addr;
|
||||
|
||||
Client::Client(){
|
||||
// Создание сокета
|
||||
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
|
||||
throw std::runtime_error("[Client::request] connect(2) call error");
|
||||
}
|
||||
}
|
||||
|
||||
void Client::run(const std::string& h, const unsigned short p) {
|
||||
struct sockaddr_in serv_addr;
|
||||
|
||||
serv_addr.sin_family = AF_INET;
|
||||
serv_addr.sin_port = htons(PORT);
|
||||
|
||||
// Преобразование IP-адреса из текстового вида в бинарный
|
||||
if (inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr) <= 0) {
|
||||
throw std::runtime_error("[Client::request] connect(2) call error");
|
||||
hostent* host_name;
|
||||
host_name = gethostbyname(h.c_str()); // Преобразование названия хоста в IP-адрес.
|
||||
if (host_name == nullptr) {
|
||||
throw std::runtime_error("Error in gethostbyname");
|
||||
}
|
||||
|
||||
serv_addr.sin_port = htons(p);
|
||||
memcpy(&serv_addr.sin_addr.s_addr, host_name->h_addr, host_name->h_length);
|
||||
|
||||
// Подключение к серверу
|
||||
if (ping(serv_addr)) {
|
||||
throw std::runtime_error("Connection lost!");
|
||||
throw std::runtime_error("Invalid hostname:port");
|
||||
}
|
||||
|
||||
std::cout << "Подключено к серверу. Введите ваше имя: ";
|
||||
@@ -44,8 +49,10 @@ void Client::run() {
|
||||
}
|
||||
// Отправка имени игрока на сервер
|
||||
send(sock, player_name.c_str(), player_name.size(), 0);
|
||||
std::cout << "Игра началась!\n";
|
||||
}
|
||||
|
||||
void Client::game(){
|
||||
std::cout << "Игра началась!\n";
|
||||
print_instructions();
|
||||
|
||||
char buffer[1024] = {0};
|
||||
@@ -74,6 +81,5 @@ void Client::run() {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
close(sock);
|
||||
}
|
||||
Reference in New Issue
Block a user