ホームページ >バックエンド開発 >Golang >icmp.Packetconn から長さ 0 の ICMP パケットのみを受信します

icmp.Packetconn から長さ 0 の ICMP パケットのみを受信します

WBOY
WBOY転載
2024-02-05 21:24:041240ブラウズ

仅从 icmp.Packetconn 接收 0 长度的 ICMP 数据包

質問の内容

主な目的は、ポート上でデータを送信し、ポートに到達できない場合は受信する ICMP メッセージをリッスンすることで、開いている UDP ポートを検出することです。これを行うには、次の Go 関数を使用して goroutine として実行します。 リーリー

これは、ICMP ping と宛先到達不能を検出できますが、常に長さ 0 のメッセージを返します。例: ###

2023/10/11 14:38:32 メッセージ = ''、長さ = 0、送信元 IP = 127.0.0.1

メッセージを解析しようとしましたが、メッセージが空であるため、実行時エラーが返されました。また、go 実行ファイルに root 権限を与えましたが、それも機能しませんでした。

編集: OS は Ubuntu 20.04

正解

自分の間違いに気づきました...

初期化されていないバッファから読み取ろうとしました。 受信バッファに次の変更を加えると、問題が解決します:

リーリー

以上がicmp.Packetconn から長さ 0 の ICMP パケットのみを受信しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。