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