1

我正在从具有 recv 功能的套接字读取数据,并在收到 ICMP 目标不可达数据包时不断出错。我真的不知道问题出在哪里。我尝试将套接字设置为不同的选项,但它们都不适合我。我使用RAW套接字。

这是我的setsockopt:

setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char *)&optval, sizeof(optval))

optval 设置为 1

这是我的recv:

    // 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 时总是出现 errno 代码 90。无法访问的数据包?ECHO 回复工作正常。

4

0 回答 0