我正在从具有recv函数的套接字读取数据,并在收到ICMP目标不可达数据包时不断收到错误。我真的不知道问题出在哪里。我尝试将套接字设置为不同的选项,但它们都不适合我。我使用RAW套接字。
这是我的setsockopt:
setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char *)&optval, sizeof(optval))
optval设置为1
这是我的回忆:
// read response from socket
if ((len = recv(sock, buffer, BUFFER_MAX, 0)) == -1)
fprintf(stderr,"Error with reading data - %d\n",errno);
BUFFER_MAX定义为65536
如果有人遇到类似的问题,请你解释一下,在尝试接收ICMP dest时,总会有错误代码90。不可达的包? ECHO回复工作正常。