Привет, я пытаюсь написать int со своей клиентской стороны на мой сервер.Моя запись на стороне клиента настроена так:
/* Writes an int to the server socket. */
void write_server_int(int sockfd, int msg)
{
printf("\n[DEBUG] THIS IS the Message: %d", msg);
printf("\n[DEBUG] THIS IS size of the Message: %lu", sizeof(msg));
int n = write(sockfd, &msg, sizeof(msg));
printf("\n[DEBUG] THIS IS N: %d", n);
if (n < 0)
error("ERROR writing int to server socket");
printf("[DEBUG] Wrote int to server: %d\n", msg);
}
Мой прием на стороне сервера настроен так:
/* Reads an int from a client socket. */
int recv_int(int cli_sockfd)
{
int msg = 0;
int n = read(cli_sockfd, &msg, sizeof(msg));
if (n < 0 || n != sizeof(int)) /* Not what we were expecting. Client likely disconnected. */
return -1;
printf("[DEBUG] Received int: %d\n", msg);
return msg;
}
Я вызываю свои функции отсюда:
while(1) {
option = menu_screen(sockfd); // Get Menu Screen and Clients Choosen Option
printf("[DEBUG] User selection menu option: %d\n", option);
while (option == 1){ // Gameplay Option
draw_board(board);
recv_msg(sockfd, msg);
if (!strcmp(msg, "TRN")) { /* Take a turn. */
int choice = take_turn_member(sockfd);
write_server_int(sockfd, choice);
}
if (!strcmp(msg, "COX")){
int coordinates_x = take_turn_coord_x();
printf("\n[DEBUG] Coordinates X is: %d", coordinates_x);
write_server_int(sockfd, coordinates_x);
printf("\n\nMADE IT HERE");
}
if (!strcmp(msg, "COY")){
int coordinates_y = take_turn_coord_y();
printf("\n[DEBUG] Coordinates Y is: %d", coordinates_y);
write_server_int(sockfd, coordinates_y);
printf("\n\nMADE IT HERE");
}
}
Мой код работает идеально до тех пор, пока он не достигнет здесь write_server_int(sockfd, coordinates_x);
из консольного вывода, показывающего, что передаваемое в write_server_int()
значение int отправляется на сервер как -1.
[DEBUG] Received message: COX
Enter Row Tile Coordinates A-I : A
[DEBUG] Coordinates X is: 0
THIS IS the Message: 0
THIS IS size of the Message: 4
THIS IS N: -1
Either the server shut down or the other player disconnected.
Game over.
Может кто-нибудь объяснить мне, что происходит и как это исправить, пожалуйста?