C# 응용 프로그램 내에서 WOL 패키지를 받으려고합니다. 왜 그것이 작동하지 않는 문제는 패키지가 DD-WRT를 실행하는 라우터에서 어떻게 방송되는지와 관련이 있다고 생각합니다.C# UdpClient를 사용하여 WOL 패키지를 수신 할 수 없습니다.
내가 UDP 패키지를 수신하는 데 사용하는 코드 : I 포트 포워드 :
UdpClient udp = new UdpClient(10);
IPEndPoint all = new IPEndPoint(IPAddress.Any, 0);
while (true)
{
System.Diagnostics.Debug.Print("listening");
byte[] receivedBytes = udp.Receive(ref all);
System.Diagnostics.Debug.Print(Encoding.ASCII.GetString(receivedBytes));
}
이 이미 나의 오래된 라우터와 함께 일을하지만 지금은 DD-WRT이 실행되고 있으며이 같은 설정을해야했다 (존재하지 않는) IP 192.168.1.254에 들어오는 UDP 꾸러미 "arp -i br0 -s 192.168.1.254 FF : FF : FF : FF : FF : FF"명령을 브로드 캐스트하기 위해 라우터가 시작될 때 실행됩니다 해당 IP에서 수신 한 메시지 이 설정이 작동하면 모든 컴퓨터에서 마법 패키지를 수신하고 네트워크 외부에서 깨울 수 있습니다.
WireShark는이 패키지를 포착 할 수 있지만 "udp.Receive (ref all);" 아니다. 나는 반면에, 방송 UDP MagicPackage (내 C# 응용 프로그램 내에서) 보낼 경우,이 패키지는 위의 내 코드에 의해 http://i.stack.imgur.com/nxaAP.png
을 수신하십시오 WOL 패키지 내 라우터 와이어 샤크의 모양에 보내는 방법이다. 그래서 http://i.stack.imgur.com/tPU1v.png
나는 다른 "대상"(255.255.255.255 대 192.168.1.254) 또는 다른 "Protocoll"(UDP 대 WOL)이 100 % 확실하지있어 경우 :이 MagicPackage는 다음과 같이 와이어 샤크에 표시 문제. 내 생각 엔, UdpClient가 WOL 패키지를 무시한다는 것은 IP 헤더 내의 대상이 다른 IP 주소 (코드가 컴퓨터 192.168.1.2에서 실행되고 있기 때문에)를 무시한다는 것입니다. 반면에 두 번째 패키지는 IP 헤더에 "255.255.255.255"의 대상 주소를 가지므로 UdpClient에 의해 catch됩니다.
그래서 큰 질문은 : 라우터에서 브로드 캐스팅하는 WOL 패키지를 수신하는 UDP 수신기를 어떻게 설정합니까?
BTW : 나는 이미이 코드를하지만, 운이없이 그것을 시도 :
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
EndPoint iep = new IPEndPoint(IPAddress.Any, 10);
sock.Bind(iep);
byte[] data = new byte[1024];
int recv = sock.ReceiveFrom(data, ref iep);
감사합니다.하지만 이미 시도해 봤지만 아무 것도 변경하지 않았습니다. :-( – Maik
원시 소켓을 사용할 수 없지만 http://sourceforge.net/projects/sharppcap/ (winpcap의 .net 포트) 패킷을 캡처 할 수있었습니다. 감사합니다. – Maik