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

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

WBOY
WBOY앞으로
2024-02-05 21:24:041238검색

仅从 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으로 문의하시기 바랍니다. 삭제