> 백엔드 개발 > Golang > icmp.Packetconn에서 길이가 0인 ICMP 패킷만 수신합니다.

icmp.Packetconn에서 길이가 0인 ICMP 패킷만 수신합니다.

WBOY
풀어 주다: 2024-02-05 21:24:04
앞으로
1239명이 탐색했습니다.

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

질문 내용

주요 목표는 포트를 통해 데이터를 전송하고 포트에 연결할 수 없는 경우 들어오는 ICMP 메시지를 수신하여 열려 있는 UDP 포트를 감지하는 것입니다. 이렇게 하려면 다음 Go 함수를 사용하여 고루틴으로 실행하세요.

으아아아

이는 ICMP 핑 및 대상 연결 불가를 감지할 수 있지만 항상 길이가 0인 메시지를 반환합니다. 예:

2023/10/11 14:38:32 消息 = '',长度 = 0,源 IP = 127.0.0.1

메시지 구문 분석을 시도했지만 비어 있기 때문에 런타임 오류가 반환됩니다. 또한 go 실행 파일에 루트 권한을 부여했지만 그것도 작동하지 않았습니다.

EDIT: OS는 Ubuntu 20.04


정답


내 실수를 발견했습니다...

초기화되지 않은 버퍼에서 읽으려고 했습니다. 수신 버퍼를 다음과 같이 변경하면 문제가 해결됩니다.

으아아아

위 내용은 icmp.Packetconn에서 길이가 0인 ICMP 패킷만 수신합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿