Linux c ++ recvfrom () изменяет (уничтожает) дескриптор файла [socket]

Я написал простой сервер UDP. Ну естественно пользуюсь recvfrom() функционировать где-то в этом. Я искал в сети его и обнаружил, что это вызвано переполнением буфера. Это правда? Но я не могу понять, почему мой код не работает и выдает ту же ошибку, вот часть, связанная с recvfrom():

char messageFromClient[1024] = {0};
returnStatus = recvfrom(udpSocket, &messageFromClient, strlen(messageFromClient), 0, (struct sockaddr*)&udpSocket,
&addrlen);

Дескриптор файла перед вызовом recvfrom() является 3 но когда я это называю, он меняется на -187301886

0

Решение

Ваш код завершается ошибкой, потому что вы указываете 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);
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]