이 UDP 패킷을 켜는 어댑터는 무엇입니까?
-
20-09-2019 - |
문제
C#에 Bootp 서버를 작성하려고합니다.
클라이언트로부터 BOOTP 패킷을 받고 구문 분석하고 있으며 서버 IP 주소로 답장해야합니다.
문제는:
- 컴퓨터에는 여러 네트워크 어댑터가있을 수 있습니다
- 클라이언트에는 아직 IP 주소가 없습니다
UDP 패킷이 어떤 어댑터에 수신되었는지 알아낼 수있는 방법이 있습니까?
해결책
이를 수행하는 몇 가지 가능한 방법이 있습니다. 각 물리적 인터페이스의 각 IP에서 별도의 소켓을 바인딩하면 패킷이 도착한 인터페이스를 항상 알 수 있습니다. Windows에서 지원되는지 모르겠지만 RecVMSG 소켓 기능과 함께 IP_RECVIF 플래그를 사용해 볼 수도 있습니다. Steven 's에는 UNIX 네트워크 프로그래밍 섹션 22.2 및 22.6의 예가 있습니다. ioctl과 함께 siocgifconf 플래그를 사용하여 컴퓨터의 인터페이스 목록을 얻을 수 있습니다. UNP 섹션 17.6에는 예제 프로그램이 있습니다. C#이 이러한 기능에 액세스하지 못하지만 Windows에서 지원되는 경우 간단한 C 프로그램을 작성하여 인터페이스 / IP 정보를 수집하고 업데이트 한 다음 MMAP를 사용하여 C# 프로그램과 인터페이스 열거 자 사이에 메모리 영역을 공유 할 수 있습니다.
제휴하지 않습니다 StackOverflow