Removed IP version checking code (since this is handled in the Sock constructor), and allowed server (but not client, yet) to quit game before round start

master
Aadhavan Srinivasan 10 months ago
parent 727aeafdb9
commit 66d7585297

@ -100,16 +100,9 @@ GameType check_server_client(int argc, char** argv) {
try {
addr_port = connect_code::decode(connect_code);
/* Check IP address version */
int ip_ver = 0;
if (check_ip_ver(addr_port[0].data()) < 0) {
throw std::invalid_argument("Invalid code entered.");
}
/* From here, assume address is either IPv4 or IPv6 */
if (check_ip_ver(addr_port[0].data()) == 4) {
ip_ver = 4;
} else {
ip_ver = 6;
}
Client* client = new Client(ES_UDP, addr_port[0].data(), std::stoi(addr_port[1]));
client->create_socket();
/* Send a specific message to the server, and wait for the appropriate response, to know that the server is ready */
@ -387,11 +380,18 @@ int main(int argc, char** argv) {
}
}
/* For client (wait for start message from server) */
/* For client (wait for start or quit message from server): When the peer quits the
game, it sends a serialized struct, containing all zeros, with the last bit turned
on as a flag. We catch this zero bit, as it indicates that the peer quit the game. */
if (type.mode == M_CLIENT) {
do {
response = type.netsock->recvAll();
} while (response[0] != 'S');
} while (response[0] != 'S' && response[0] != 0);
if (response[0] == 0) {
CloseWindow();
std::cout << "Peer unexpectedly quit game." << std::endl;
return -1;
}
game_started = true;
std::cout << "Game has been started by server." << std::endl;
}

Loading…
Cancel
Save