Привет, я новичок в программировании сокетов. Я пытаюсь получить имя пользователя от моего клиента.В настоящее время в моем файле сервера записан следующий метод:
/* Reads a message from the server socket. */
char *recv_msg(int sockfd)
{
char *msg;
/* All messages are 9 bytes. */
memset(msg, 0, 8);
int n = read(sockfd, msg, 8);
if (n < 1 || n >9) /* Not what we were expecting. Server got killed or the other client disconnected. */
error("ERROR reading message from server socket.");
return msg;
}
Я вызываю свою функцию следующим образом:
/* Authentication Process */
write(cli_sockfd[num_conn], "USN", sizeof(int));
char *username;
username = recv_msg(cli_sockfd[num_conn]);
printf("[DEBUG] Client username is %s.\n", username);
Я знаю, что клиент успешно получает сообщение "USN", ноЯ получаю «Ошибка сегментации: 11». Я полагаю, что на username = recv_msg(cli_sockfd[num_conn]);
может кто-нибудь объяснить и помочь мне, почему?