, когда i recvfrom(), полученное сообщение верное, но исходный адрес полностью беспорядок, Почему это происходит?recvfrom() введите неправильный адрес источника
char traid_messageR[MAXDATASIZE];
socklen_t addlen;
struct sockaddr_in source_addr;
if((numbytes=recvfrom(udp_sockfd, traid_messageR, 256, 0, (struct sockaddr*)&source_addr, &addlen)) == -1)
{
perror("recvfrom");
exit(1);
}
результат таков:
(gdb) print source_addr
$1 = {sin_family = 61428, sin_port = 42, sin_addr = {s_addr = 49809},
sin_zero = "\234\352\377\277\310\352\377\277"}
49809 выглядит как номер порта, но это номер порта этого приемника ... какая-либо одна есть идеи, почему это спасибо? много oh, еще одна вещь, я использовал это в цикле select(), IF_ISSET (und_socked,% fds), а затем исключил вышеуказанный код, это влияет?
да, после определения ценности addlen, она работает, по я не понимаю тихо, не addlen предполагают, чтобы быть изменен во время recvfrom? почему мне нужно присвоить ему значение в первую очередь? – user2810081