# java
```java
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class WakeOnLan {
public static void main(String[] args) {
String targetMacAddress = "XX:XX:XX:XX:XX:XX"; // 替换为目标计算机的MAC地址
try {
wakeUp(targetMacAddress);
System.out.println("Wake-on-LAN packet sent successfully.");
} catch (IOException e) {
System.err.println("Error sending Wake-on-LAN packet: " + e.getMessage());
}
}
public static void wakeUp(String macAddress) throws IOException {
byte[] macBytes = parseMacAddress(macAddress);
byte[] magicPacket = new byte[102];
for (int i = 0; i < 6; i++) {
magicPacket[i] = (byte) 0xFF;
}
for (int i = 6; i < magicPacket.length; i += macBytes.length) {
System.arraycopy(macBytes, 0, magicPacket, i, macBytes.length);
}
InetAddress broadcastAddress = InetAddress.getByName("255.255.255.255");
int port = 9;
try (DatagramSocket socket = new DatagramSocket()) {
DatagramPacket packet = new DatagramPacket(magicPacket, magicPacket.length, broadcastAddress, port);
socket.send(packet);
}
}
private static byte[] parseMacAddress(String macAddress) {
String[] macParts = macAddress.split(":");
byte[] macBytes = new byte[macParts.length];
for (int i = 0; i < macParts.length; i++) {
macBytes[i] = (byte) Integer.parseInt(macParts[i], 16);
}
return macBytes;
}
}
```
# c#
```c#
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class WakeOnLan
{
public static void Main(string[] args)
{
string targetMacAddress = "XX:XX:XX:XX:XX:XX"; // 替换为目标计算机的MAC地址
try
{
WakeUp(targetMacAddress);
Console.WriteLine("Wake-on-LAN packet sent successfully.");
}
catch (Exception ex)
{
Console.WriteLine("Error sending Wake-on-LAN packet: " + ex.Message);
}
}
public static void WakeUp(string macAddress)
{
byte[] macBytes = ParseMacAddress(macAddress);
byte[] magicPacket = new byte[102];
for (int i = 0; i < 6; i++)
{
magicPacket[i] = 0xFF;
}
for (int i = 6; i < magicPacket.Length; i += macBytes.Length)
{
Array.Copy(macBytes, 0, magicPacket, i, macBytes.Length);
}
IPAddress broadcastAddress = IPAddress.Parse("255.255.255.255");
int port = 9;
using (UdpClient udpClient = new UdpClient())
{
udpClient.EnableBroadcast = true;
udpClient.Send(magicPacket, magicPacket.Length, new IPEndPoint(broadcastAddress, port));
}
}
private static byte[] ParseMacAddress(string macAddress)
{
string[] macParts = macAddress.Split(':');
byte[] macBytes = new byte[macParts.Length];
for (int i = 0; i < macParts.Length; i++)
{
macBytes[i] = Convert.ToByte(macParts[i], 16);
}
return macBytes;
}
}
```
# php
```php
<?php
function wakeOnLan($macAddress) {
// 将MAC地址转换为字节格式
$macBytes = str_split(str_replace(':', '', $macAddress), 2);
$macHex = implode(array_map('hex2bin', $macBytes));
// 构造Wake-on-LAN数据包
$magicPacket = str_repeat(chr(0xFF), 6) . str_repeat($macHex, 16);
// 发送数据包到目标计算机的局域网广播地址
$broadcastIp = '255.255.255.255';
$port = 9;
// 创建UDP Socket
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_set_option($socket, SOL_SOCKET, SO_BROADCAST, 1);
// 发送数据包
socket_sendto($socket, $magicPacket, strlen($magicPacket), 0, $broadcastIp, $port);
// 关闭Socket
socket_close($socket);
}
// 使用目标计算机的MAC地址唤醒计算机
$targetMacAddress = 'XX:XX:XX:XX:XX:XX';
wakeOnLan($targetMacAddress);
```
# nodejs
```javascript
const dgram = require('dgram');
const server = dgram.createSocket('udp4');
server.on('message', (msg, rinfo) => {
const targetMacAddress = msg.toString('utf8');
console.log('Received MAC address:', targetMacAddress);
// 在这里发送Wake-on-LAN数据包到目标计算机的局域网广播地址
// 可以使用与之前示例相同的代码来发送数据包
// ...
// 假设数据包已发送成功,向前端发送响应
server.send('Wake-on-LAN packet sent successfully.', rinfo.port, rinfo.address);
});
server.on('listening', () => {
const address = server.address();
console.log(`Server listening on ${address.address}:${address.port}`);
});
const port = 8080; // 替换为你的服务器端口
server.bind(port);
```
# python
```python
import socket
def wake_on_lan(mac_address):
# 将MAC地址转换为字节格式
mac_hex = mac_address.replace(':', '').decode('hex')
# 构造Wake-on-LAN数据包
magic_packet = b'\xff' * 6 + mac_hex * 16
# 发送数据包到目标计算机的局域网广播地址
broadcast_ip = '255.255.255.255'
port = 9
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.sendto(magic_packet, (broadcast_ip, port))
# 使用目标计算机的MAC地址唤醒计算机
target_mac_address = 'XX:XX:XX:XX:XX:XX'
wake_on_lan(target_mac_address)
```