PHPを使用したネットワークブート
ローカルネットワークでは、マジックパケットをホストのネットワークカードに送信できます。マジックパケットの内容の先頭には6つの「FF」があり、その後にネットワークカードのMACが16個あります。ホストのバージョンが Wake on LAN 機能を有効にしている場合、ネットワーク カードは適格な Magic Packet を受信した後にコンピュータの電源を入れることができます。 (ホスト バージョンごとに、PME Event Wake Up、Power On By PCI Devices など、Wake on LAN の名前が異なります...)
ネットワーク ブートが可能かどうかに影響する別の設定。デバイス内での操作です。システム管理者は、ネットワーク カード デバイス コンテンツの電源管理で、「このデバイスによるコンピュータのウェイクアップを許可する」にチェックを入れる必要があります。
ネットワーク カードの MAC が 01-02-03-04-05-06 であると仮定します。
マジック パケットの内容は次のとおりです。
FFFFFFFFFFFF010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506
その後、UDP を使用しますプロトコル ポート 7 またはポート 9 がコンピュータに送信されます
したがって、ネットワーク ブートを実現する方法は、デバイス (サーバー) がローカル ネットワーク内のターゲット コンピュータのネットワーク カードにマジック パケットを送信する方法を見つけることです。 Magic Packet の送信に使用され、通常は外部接続があり、外部ネットワークから起動する効果も得られます。
次の PHP 送信マジック パケットのサンプル ソース
WOL: Wake-on-LAN チュートリアルとボーナス PHP スクリプト
次のようにわずかに変更されています:
class WakeOnLan { /** * 喚醒電腦 * @param type $addr ,目標IP 或 廣播位址(格式 01-02-03-04-05-06 或 01:02:03:04:05:06) * @param type $mac * @param type $port , 7 or 9 * @return boolean */ public function wake($addr, $mac, $port) { $mac = str_replace("-", ":", $mac); $addr_byte = explode(':', $mac); $hw_addr = ''; for ($a = 0; $a < 6; $a++) { $hw_addr .= chr(hexdec($addr_byte[$a])); } // 開頭六個 "FF" $msg = chr(255) . chr(255) . chr(255) . chr(255) . chr(255) . chr(255); // 16個MAC for ($a = 1; $a <= 16; $a++) { $msg .= $hw_addr; } // 開一個 UDP 的 socket // AF_INET:IP4 // SOCK_DGRAM:The UDP protocol is based on this socket type // SOL_UDP:使用 UDP 通訊協定 $skt = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); $err = array(); if ($skt === false) { $err[] = "Error creating socket!"; $err[] = "Error code is '" . socket_last_error($skt) . "' - " . socket_strerror(socket_last_error($skt)); throw new Exception(implode("\n", $err)); } else { // 設定使用broadcast廣播訊息 // $opt_ret = socket_set_option($skt, 1, 6, TRUE); $opt_ret = socket_set_option($skt, SOL_SOCKET, SO_BROADCAST, true); if ($opt_ret === false) { $err[] = "setsockopt() failed, error: " . socket_strerror(socket_last_error($skt)); throw new Exception(implode("\n", $err)); } if (socket_sendto($skt, $msg, strlen($msg), 0, $addr, $port)) { //Magic Packet sent successfully $res = trim(socket_strerror(socket_last_error($skt))); socket_close($skt); return $res; } else { $err[] = "Magic packet failed!"; throw new Exception(implode("\n", $err)); } } }}$WOL = new WakeOnLan();try { $res = $WOL->wake('192.168.0.255', "01-02-03-04-05-06", 7); $res = $WOL->wake('192.168.0.255', "01-02-03-04-05-06", 9); var_dump($res);} catch (Exception $ex) { var_dump($ex->getMessage());}
- 指定されたマジック パケットをブロードキャスト アドレス (例: 192.168.0.255) に渡します。これは、ローカル ネットワーク内のすべてのコンピューターに送信でき、一致する MAC を持つコンピューターのみが起動します。
- 一部のコンピューターでは、起動するためにポート 7 またはポート 9 に渡す必要がある場合があります。
- 元の例のsocket_set_option($skt, 1, 6, TRUE)では、SOL_SOCKETとSO_BROADCASTの定数が環境によって異なると思われるため、1と6は定数に置き換えられています。すべてのソケット定数を表示 http://php.net/manual/en/sockets.constants.php#108291
$a = get_defined_constants(TRUE);foreach ($a['sockets'] as $constant => $value) { printf("%-25s %d", $constant, $value);}
ログイン後にコピーWake on LAN - フリー百科事典 Wikipedia
Windows 8 Wake On LAN のセットアップ - ダーク スレッド
PHP:socket_create - マニュアル
PHP:socket_set_option - マニュアル
PHP:socket_get_option - マニュアル
arduino - PHP : UDP ブロードキャスト メッセージを送信し、応答を待ちます - スタック オーバーフロー
小新竹の元の部族: [TCP/IP 図解] ブロードキャストとマルチキャスト

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

Laravelのサービスコンテナとサービスプロバイダーは、そのアーキテクチャの基本です。 この記事では、サービスコンテナ、詳細サービスプロバイダーの作成、登録、および実用的な使用法を例で説明します。 Oveから始めます

PHPロギングは、Webアプリケーションの監視とデバッグ、および重要なイベント、エラー、ランタイムの動作をキャプチャするために不可欠です。システムのパフォーマンスに関する貴重な洞察を提供し、問題の特定に役立ち、より速いトラブルシューティングをサポートします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。
