iOS 앱이 현재 사용중인 airplay 장치의 IP 주소를 가져올 수 있는지 궁금합니다.활성 AirPlay 장치의 IP 주소를 찾는 방법은 무엇입니까?
또는 네트워크상의 모든 공중 지원 장치의 IP 주소.
미리 감사드립니다.
EDIT : 이제 내가 받아 들인 대답을 얻었지만 현재 재생중인 airplay 장치의 IP를 얻는 방법을 알고 싶습니다.
iOS 앱이 현재 사용중인 airplay 장치의 IP 주소를 가져올 수 있는지 궁금합니다.활성 AirPlay 장치의 IP 주소를 찾는 방법은 무엇입니까?
또는 네트워크상의 모든 공중 지원 장치의 IP 주소.
미리 감사드립니다.
EDIT : 이제 내가 받아 들인 대답을 얻었지만 현재 재생중인 airplay 장치의 IP를 얻는 방법을 알고 싶습니다.
NSNetServiceBrowser를 사용하면 프로토콜을 사용하여 장치를 검색 할 수 있습니다. 그 후 http://developer.apple.com/library/mac/#qa/qa1312/_index.html
: 당신은 검색 할 프로토콜에 대한 @"_pdl-datastream._tcp"
을 변경해야
_netServiceBrowser= [[NSNetServiceBrowser alloc] init];
_netServiceBrowser.delegate= self;
[_netServiceBrowser searchForServicesOfType:@"_pdl-datastream._tcp" inDomain:@"local."];
, 여기 프로토콜의 목록을 찾을 수 있습니다 나는 프린터와 같은 한 한 내 코드처럼 보이는
#pragma mark - NSNetServiceBrowserDelegate
-(void)netServiceBrowserWillSearch:(NSNetServiceBrowser *)aNetServiceBrowser{
//prepare the start of the search
}
-(void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didFindService:(NSNetService *)aNetService moreComing:(BOOL)moreComing{
//Find a service, remember that after that you have to resolve the service to know the address
[_printers addObject:aNetService];
aNetService.delegate=self;
[aNetService resolveWithTimeout:5.0];
//More coming says if it has find more services, in case of more service are in queue wait to reload your interface
if (!moreComing) {
[self.tableView reloadData];
}
}
-(void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didNotSearch:(NSDictionary *)errorDict{
//Do what you want in case of error
}
-(void)netServiceBrowserDidStopSearch:(NSNetServiceBrowser *)aNetServiceBrowser{
//End search!
}
- (NSString *)getStringFromAddressData:(NSData *)dataIn {
//Function to parse address from NSData
struct sockaddr_in *socketAddress = nil;
NSString *ipString = nil;
socketAddress = (struct sockaddr_in *)[dataIn bytes];
ipString = [NSString stringWithFormat: @"%s",
inet_ntoa(socketAddress->sin_addr)]; ///problem here
return ipString;
}
- (void)netServiceDidResolveAddress:(NSNetService *)sender
{
//delegate of NSNetService resolution process
[_addresses addObject:[self getStringFromAddressData:[sender.addresses objectAtIndex:0]]];
[self.tableView reloadData];
}
웹 유용 할 수 있습니다 : http://www.macresearch.org/cocoa-scientists-part-xxviii-bonjour-and-how-do-you-do
당신은 프로토콜의 기능을 작성해야3210도움이되기를 바랍니다.
감사합니다. 최대한 빨리 시도해 보겠습니다. – Nailer
"_airplay._tcp"가이 용도로 올바른 프로토콜 인 것 같습니다. 아직 실전에서 사용해 보지 못했지만 작동이 확인되면 업데이트를 게시 할 것입니다. – Nailer
U는 매우 쉽게 볼 수 있습니다. 문제가 있다고 말하면 무엇이 문제인지 알 수 있습니다. – Jpellat