UDP 패킷을 수신하고 상세하게 로깅하는 Go 기반 서버입니다.
- 지정된 포트에서 UDP 패킷 수신
- 패킷 데이터를 16진수 덤프 형식으로 출력
- 송신자별 통계 추적 (패킷 수, 총 바이트, 평균 패킷 크기)
- 콘솔 및 파일 로깅 지원
- Graceful Shutdown 지원 (Ctrl+C)
- Go 1.24.5 이상
git clone <repository-url>
cd udp-testgo run main.gogo run main.go -port 8080go run main.go -file udp.loggo run main.go -console=false -file udp.log| 옵션 | 기본값 | 설명 |
|---|---|---|
-port |
3000 | UDP 수신 포트 |
-file |
"" | 로그 파일 경로 (지정하지 않으면 콘솔만 출력) |
-console |
true | 콘솔 출력 활성화 여부 |
================================================================================
📦 Packet #1 | Timestamp: 2025-10-20 09:06:15.123
📍 Sender: 127.0.0.1 (Port: 54321)
📊 Size: 11 bytes | Total from this sender: 1 packets, 11 bytes
================================================================================
0000: 48 65 6c 6c 6f 20 57 6f 72 6c 64 |Hello World|
프로그램 종료 시 (Ctrl+C) 각 송신자별 통계를 출력합니다:
================================================================================
📊 SENDER SUMMARY
================================================================================
📍 Sender: 127.0.0.1
First seen: 2025-10-20 09:06:15
Last seen: 2025-10-20 09:06:30
Duration: 15s
Packets: 10
Total bytes: 110
Avg packet size: 11 bytes
================================================================================
프로젝트에는 다양한 유형의 UDP 패킷을 전송하는 테스트가 포함되어 있습니다.
- 터미널 1에서 서버 시작:
go run main.go -port 8080- 터미널 2에서 테스트 실행:
go test -vTestSendSimpleText- 간단한 텍스트 전송TestSendBinaryData- 바이너리 데이터 전송TestSendLargeData- 큰 데이터 전송 (2KB)TestSendMixedContent- 혼합 콘텐츠 (텍스트 + 바이너리)TestSendJSONData- JSON 데이터 전송TestSendVeryLargeData- 매우 큰 데이터 전송 (5KB)TestSendMultiplePackets- 여러 패킷 순차 전송
실행 파일 생성:
go build -o udp-server
./udp-server -port 8080go run main.gogo run main.go -port 9000 -file /var/log/udp-packets.log -console=falsego run main.go -port 8080 -file debug.log -console=true- 최대 UDP 패킷 크기: 65535 바이트
- 패킷 버퍼 채널 크기: 100 패킷
- 동시성: Goroutine을 사용한 비동기 패킷 수신
- 16진수 덤프: 16바이트/라인, ASCII 표현 포함
이 프로젝트의 라이선스는 LICENSE 파일을 참조하세요.