Я написал простой сервер UDP. Ну естественно пользуюсь recvfrom()
функционировать где-то в этом. Я искал в сети его и обнаружил, что это вызвано переполнением буфера. Это правда? Но я не могу понять, почему мой код не работает и выдает ту же ошибку, вот часть, связанная с recvfrom()
:
char messageFromClient[1024] = {0};
returnStatus = recvfrom(udpSocket, &messageFromClient, strlen(messageFromClient), 0, (struct sockaddr*)&udpSocket,
&addrlen);
Дескриптор файла перед вызовом recvfrom()
является 3
но когда я это называю, он меняется на -187301886
Ваш код завершается ошибкой, потому что вы указываете 0 размер буфера приема и передаете дескриптор файла сокета в качестве аргумента адреса равноправного узла (который перезаписывает его значение):
Fix:
char messageFromClient[1024];
sockaddr_in addr;
socklen_t addrlen = sizeof addr;
ssize_t received = recvfrom(udpSocket, messageFromClient, sizeof messageFromClient, 0, (sockaddr*)&addr, &addrlen);
Других решений пока нет …