1
두 개의 가상 네트워크가 있습니다 (예 : 10.116.10.xxx 및 10.116.11.xxx). 나는 마법의 패킷을 전송하려면 다음 코드를 :매직 패킷 및 가상 네트워크
using System;
using System.Net;
using System.Net.Sockets;
using System.Globalization;
public class MagicPackets:UdpClient
{
public MagicPackets() : base()
{
}
public void SetClientToBrodcastMode()
{
if(this.Active)
this.Client.SetSocketOption(SocketOptionLevel.Socket,
SocketOptionName.Broadcast,0);
}
}
public class Run
{
public static void Main(string[] args)
{
Run.WakeFunction(args[0]);
}
private static void WakeFunction(string MAC_ADDRESS)
{
MagicPackets client=new MagicPackets();
client.Connect(new
IPAddress(0xffffffff),
0x2fff);
client.SetClientToBrodcastMode();
int counter=0;
byte[] bytes=new byte[1024];
//first 6 bytes should be 0xFF
for(int y=0;y<6;y++)
bytes[counter++]=0xFF;
//now repeate MAC 16 times
for(int y=0;y<16;y++)
{
int i=0;
for(int z=0;z<6;z++)
{
bytes[counter++]=
byte.Parse(MAC_ADDRESS.Substring(i,2),
NumberStyles.HexNumber);
i+=2;
}
}
int reterned_value=client.Send(bytes,1024);
}
}
코드는 내가 깨어하려는 컴퓨터와 같은 가상 네트워크에있는 컴퓨터에서 실행하면 잘 작동하지만 컴퓨터가있는 경우 작동하지 않습니다 다른 가상 네트워크에서. 왜 어떤 아이디어를 고쳐야합니까?
덕분 가즈
IPAddress는 0xffffffff 이명 255.255.255.255이며 이러한 브로드 캐스트는 동일한 서브넷 내에서만 전송됩니다. – Oliver
다른 게시판 도메인의 컴퓨터에 마법 패킷을 보낼 수있는 방법이 있습니까? – Gaz
IP 네트워크를 가정하십시오. 잠자기 컴퓨터의 포트로 패킷을 가져와야합니다. 자고 있기 때문에 해당 네트워크의 라우터에 현재 ARP 테이블 항목 (IP 대 MAC 매핑)이 없다고 가정해야합니다. 그러면 깨어있을 때 IP 주소로 보낼 수 없습니다. 따라서 대상 네트워크에서 브로드 캐스트해야합니다. 그렇게하려면 직접 방송을해야합니다 (예 : 10.116.10.x에서 10.116.11.255로 전송). 이것의 문제점은 그것이 보안 구멍이고 정확하게 구성된 라우터가 그 패킷을 버리는 것입니다. – janm