Я распечатываю msghdr.msg_namelen после возврата recvmmsg(), но не установлен.recvmmsg() не заполняет msghdr.msg_namelen?
Однако, msg_len установлен правильно.
Я слушаю многоадресный трафик (то есть дейтаграмму).
Есть ли что-нибудь, что мне нужно сделать для recvmmsg() для заполнения msghdr?
Я также попытался вызвать recvmsg(). msghdr также не заполняется. Есть идеи?
Возможно, потому, что на странице руководства для ['recvmmsg()'] (http://linux.die.net/man/2/recvmmsg) не упоминается 'msg_namelen', поэтому он не знает, что он должен быть установленным? –
Он делает. Если вы посмотрите на man-страницу recvmmsg(), он попросит пользователя обратиться к recvmsg(). Если вы посмотрите на man-страницу recvmsg(), в ней упоминается: «msg_name может указываться как нулевой указатель, если имена не требуются или не требуются». Затем, если вы посмотрите на файл заголовка msghdr, в комментарии для msghdr.msg_namelen указано «Длина адресных данных», то есть msghdr.msg_name. – Hei
Кроме того, если бы я попытался напечатать поле, которого не существует, gcc не позволит мне скомпилировать либо :) – Hei