【发布时间】:2014-05-17 06:22:38
【问题描述】:
昨天我开始使用 Sony Camera Remote API 开发一个 iPhone 应用程序。
使用 WiFi 摄像头的第一步是建立与摄像头的连接。因此,我使用 AsyncUdpSocket 使用以下代码启动 ssdp 发现:
-(void)discoverWiFiCamera{
self.ssdpSock = [[AsyncUdpSocket alloc] initIPv4];
[self.ssdpSock setDelegate:self];
[self.ssdpSock enableBroadcast:TRUE error:nil];
NSError *socketError = nil;
if (![self.ssdpSock bindToPort:1900 error:&socketError]) {
NSLog(@"Failed binding socket: %@", [socketError localizedDescription]);
}
if(![self.ssdpSock joinMulticastGroup:@"239.255.255.250" error:&socketError]){
NSLog(@"Failed joining multicast group: %@", [socketError localizedDescription]);
}
if (![self.ssdpSock enableBroadcast:TRUE error:&socketError]){
NSLog(@"Failed enabling broadcast: %@", [socketError localizedDescription]);
}
[self.ssdpSock sendData:[@"M-SEARCH * HTTP/1.1\r\nHOST: 239.255.255.250:1900\r\nMAN: \"ssdp:discover\"\r\nMX: 1\r\nST: urn:schemas-sony-com:service:ScalarWebAPI:1\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]
toHost:@"239.255.255.250" port:1900 withTimeout:-1 tag:1];
[self.ssdpSock receiveWithTimeout:-1 tag:1];
[NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(completeSearch:) userInfo:self repeats:NO];
}
- (BOOL)onUdpSocket:(AsyncUdpSocket *)sock didReceiveData:(NSData *)data withTag:(long)tag fromHost:(NSString *)host port:(UInt16)port{
NSLog(@"%s %ld %@ %d",__FUNCTION__,tag,host,port);
NSString *aStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
NSLog(@"\r\n%@",aStr);
return YES;
}
看起来,该应用程序能够与相机 (Sony DSC QX10) 建立连接。因此,iPhone(IP 地址:10.0.1.1)收到来自主机(IP 地址:10.29.57.38)的响应。但是,响应数据与发送的数据完全相同。
M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
MX: 1
ST: urn:schemas-sony-com:service:ScalarWebAPI:1
因此,我想问一下,你们中是否有人已经体验过 Sony Camera API 或 AsnycUdpSocket 的相同行为?
谢谢, 约瑟夫
【问题讨论】:
-
您看到的实际上是您发送的消息。我有同样的问题,并发现(通过一些 UDP 嗅探)索尼自己的应用程序不使用 SSDP 发现方法。他们只是连接到 QX10 可用的地址 10.0.0.1/sony/camera。我自己尝试过,并且能够到达该地址上的相机。由于 Sony 的 SampleApp 甚至无法找到 QX10,我相信 SSDP 发现甚至不起作用。
-
感谢您的回答。我还测试了显然无法正常工作的 SampleApp(他们甚至在测试自己的 SampleApp 吗?)。不过,连接到地址 10.0.0.1/sony/camera 可以正常工作。
标签: objective-c sony