Вопрос

У меня есть 2 виртуальные сети, скажем, 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);
     }
}

Код работает нормально, когда запускаешь его с компьютера в той же виртуальной сети, что и компьютер, который я хочу разбудить, но не работает, если компьютер находится в другой виртуальной сети.Есть идеи, почему и как исправить?

Спасибо, Газ

Это было полезно?

Решение

Волшебные пакеты - это пакеты второго уровня, поэтому они не пересекают границы маршрутизатора (третий уровень).

Как это исправить?Поместите передатчик и приемник в один и тот же широковещательный домен.В данном случае, в той же виртуальной сети.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top