程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#收集叫醒功效完成

c#收集叫醒功效完成

編輯:C#入門知識

c#收集叫醒功效完成。本站提示廣大學習愛好者:(c#收集叫醒功效完成)文章只能為提供參考,不一定能成為您想要的結果。以下是c#收集叫醒功效完成正文


收集叫醒完成了對收集的集中治理,即在任什麼時候刻,網管中間的IT治理人員可以經過收集長途叫醒一台處於休眠或關機狀況的盤算機。應用這一功效,IT治理人員可以鄙人班後,收集流量最小和企業的正常運作最不受影響的時刻完成一切操作體系及運用軟件的進級及其他治理義務。

為了叫醒收集上的盤算機,用戶必需收回一種數據包,該數據包的格局與通俗數據包分歧,並且還必需應用響應的公用軟件能力發生。以後比擬廣泛采取的是AMD公司制造的Magic Packet,這套軟件可以生成收集叫醒所須要的特別數據包。該數據包包括有持續6個字節的“FF”和持續反復16次的MAC地址。Magic Packet 固然只是AMD公司開辟推行的一項技巧,並不是業界公認的尺度,然則仍遭到許多網卡制作商的支撐,是以很多具有收集叫醒功效的網卡都能與之兼容。

要應用收集叫醒,你必需具有:

1:可向網卡發送收集“叫醒幀”的軟件。

2:可解碼“叫醒幀”的網卡,該網卡同時還必需可以從幫助電源中獲得能量,並可以或許向主板發送“叫醒旌旗燈號”。 (根本上都支撐)

先說被叫醒機械若何設置
1.Win7體系下設置以下圖,盤算機-》裝備治理器-》網卡驅動屬性



2.ipconfig –all 敕令檢查本機網卡的MAC地址

發送的收集數據包顯示以下圖,個中mac地址是隨意填寫的反復的09。

C#代碼以下:


private IPEndPoint point;
private UdpClient client = new UdpClient();
/**
 * 叫醒長途機械辦法
 * @param
 * mac 要叫醒的機械的MAC
 * IP
 * port udp新聞發送端口
 *
 * 摘要:叫醒辦法為網卡供給的魔術封包功效,即以播送形式發送6個FF加上16遍目的MAC地址的字節數組
 **/
private void wakeUp(string mac, int port, string ip)
{
    byte[] magicBytes = getMagicPacket(mac);
    point = new IPEndPoint(IPAddress.Parse(ip), port);//播送形式:255.255.255.255
    try
    {
        client.Send(magicBytes, magicBytes.Length, point);
    }
    catch (SocketException e) { MessageBox.Show(e.Message); }
}

/// <summary>
/// 字符串轉16進制字節數組
/// </summary>
/// <param name="hexString"></param>
/// <returns></returns>
public static byte[] strToHexByte(string hexString)
{
    hexString = hexString.WordStr(" ", "");
    if ((hexString.Length % 2) != 0)
        hexString += " ";
    byte[] returnBytes = new byte[hexString.Length / 2];
    for (int i = 0; i < returnBytes.Length; i++)
        returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
    return returnBytes;
}

/// <summary>
/// 拼裝MAC魔術封包
/// </summary>
/// <param name="hexString"></param>
/// <returns></returns>
public static byte[] getMagicPacket(string macString)
{
    byte[] returnBytes = new byte[102];
    string commandString = "FFFFFFFFFFFF";
    for (int i = 0; i < 6; i++)
        returnBytes[i] = Convert.ToByte(commandString.Substring(i * 2, 2), 16);
    byte[] macBytes = strToHexByte(macString);
    for (int i = 6; i < 102; i++)
    {
        returnBytes[i] = macBytes[i % 6];
    }
    return returnBytes;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved