用 GPT 啊
#import <Foundation/Foundation.h>
#import "GCDAsyncUdpSocket.h"
@
interface TestStr : NSObject
+ (void)wakeup;
@
end@
implementation TestStr
+ (void)wakeup {
NSString *mac = @"00:30:64:69:F8:A7"; // mac 地址
int port = 9;
NSArray *macComponents = [mac componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@":-"]];
NSMutableData *macData = [NSMutableData data];
for (NSString *component in macComponents) {
unsigned char byte;
[[NSScanner scannerWithString:component] scanHexInt:(unsigned int *)&byte];
[macData appendBytes:&byte length:1];
}
// 用来存储网络唤醒数据包
NSMutableData *wakeupData = [NSMutableData dataWithLength:6 + 16 * macData.length];
memset([wakeupData mutableBytes], 0xff, 6);
for (int i = 6; i < wakeupData.length; i += macData.length) {
[macData getBytes:[wakeupData mutableBytes] + i length:macData.length];
}
// 创建 UDP 套接字
GCDAsyncUdpSocket *udpSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:nil delegateQueue:dispatch_get_main_queue()];
// 将字符形式的 IP 地址转换成标准的 IP 地址
NSData *addressData = [@"192.168.100.255" dataUsingEncoding:NSUTF8StringEncoding];
// NSData *addressData = [@"255.255.255.255" dataUsingEncoding:NSUTF8StringEncoding];
// 发送魔法包
[udpSocket sendData:wakeupData toHost:[GCDAsyncUdpSocket hostFromAddress:addressData] port:port withTimeout:-1 tag:0];
[udpSocket close];
}
@
endint main(int argc, const char * argv[]) {
@
autoreleasepool {
[TestStr wakeup];
}
return 0;
}