通过 wifi 使用 gcdasyncsocket 发送和接收 key/value 对
Send and receive key/value pair using gcdasyncsocket over wifi
我制作了一个 iOS 应用程序,它从 BLE Beacon 接收 RSSI 值并通过 wifi 将其发送(使用 GCDAsynSocket)到连接的 MacBook。我在 MacBook 上的下一个应用程序接收 RSSI 值并以 .txt 格式保存(使用 NSOutpuStream class)。
现在,我需要从八个不同的 BLE 信标及其各自的 MAC 地址以 key/value 对发送 RSSI 值。
我尝试使用 NSKeyedArchiver 将 NSDictionary 编码为 NSData 来解决它。
NSData *data = [NSKeyedArchiver archivedDataWithRootObject: NSDictionaryContaningKeyValuePair];
在接收端(MacBook),我使用 NSUnarchiver 进行解码。我无法提取包含 key/value(MAC address/RSSI 值)对的 NSDictionary 并将其存储到 .txt 文件。此外,由于 NSoutputStrteam 写入方法采用非空 const uint8_t 值,我如何在 .txt 文件中写入 Key/value 对?
我使用 Objective-C 和 Xcode (7.0).
谢谢。
得到解决方案。可以使用 NSJSONSerialization class 发送 NSDictionary。在发送端 (iOS):
NSDictionary* dictInfo = [NSDictionary dictionaryWithObjectsAndKeys:self.txtInfo.text,@"data", nil];
NSData* dataDict = [NSJSONSerialization dataWithJSONObject:dictInfo options:NSJSONWritingPrettyPrinted error:nil];
[self.socket writeData:dataDict withTimeout:-1.0f tag:0];
接收端 (MacBook):
if ([self getSelectedSocket]== sock) {
[_dataBuffer appendData:data];
if ([sock socketAvailableBytes] == 0) {
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:_dataBuffer options:NSJSONReadingMutableLeaves error:nil];
DLog("Dictionary Info: %@", dict);
NSString* strInfo = (NSString*)[dict objectForKey:@"data"];
[_dataBuffer setLength:0];
self.txtLogs.stringValue= strInfo;
更多信息请访问https://github.com/boobalaninfo/Bonjour-iOS-MAC-Apps。
我制作了一个 iOS 应用程序,它从 BLE Beacon 接收 RSSI 值并通过 wifi 将其发送(使用 GCDAsynSocket)到连接的 MacBook。我在 MacBook 上的下一个应用程序接收 RSSI 值并以 .txt 格式保存(使用 NSOutpuStream class)。 现在,我需要从八个不同的 BLE 信标及其各自的 MAC 地址以 key/value 对发送 RSSI 值。 我尝试使用 NSKeyedArchiver 将 NSDictionary 编码为 NSData 来解决它。
NSData *data = [NSKeyedArchiver archivedDataWithRootObject: NSDictionaryContaningKeyValuePair];
在接收端(MacBook),我使用 NSUnarchiver 进行解码。我无法提取包含 key/value(MAC address/RSSI 值)对的 NSDictionary 并将其存储到 .txt 文件。此外,由于 NSoutputStrteam 写入方法采用非空 const uint8_t 值,我如何在 .txt 文件中写入 Key/value 对? 我使用 Objective-C 和 Xcode (7.0).
谢谢。
得到解决方案。可以使用 NSJSONSerialization class 发送 NSDictionary。在发送端 (iOS):
NSDictionary* dictInfo = [NSDictionary dictionaryWithObjectsAndKeys:self.txtInfo.text,@"data", nil];
NSData* dataDict = [NSJSONSerialization dataWithJSONObject:dictInfo options:NSJSONWritingPrettyPrinted error:nil];
[self.socket writeData:dataDict withTimeout:-1.0f tag:0];
接收端 (MacBook):
if ([self getSelectedSocket]== sock) {
[_dataBuffer appendData:data];
if ([sock socketAvailableBytes] == 0) {
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:_dataBuffer options:NSJSONReadingMutableLeaves error:nil];
DLog("Dictionary Info: %@", dict);
NSString* strInfo = (NSString*)[dict objectForKey:@"data"];
[_dataBuffer setLength:0];
self.txtLogs.stringValue= strInfo;
更多信息请访问https://github.com/boobalaninfo/Bonjour-iOS-MAC-Apps。