2012-07-23 5 views
2

현재 GCDAsyncUdpSocket을 사용하여 iOS 장치간에 wifi를 통해 멀티 캐스트 데이터 그램을 보냅니다.wifi 및 bluetooth를 통한 멀티 캐스트에 GCDAsyncUdpSocket 사용 방법

코드는 아주 간단합니다 ..

클라이언트이 잘 무선 랜을 통해 작동

self.multicastSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()]; 

NSData *d = [@"hello" dataUsingEncoding:NSUTF8StringEncoding]; 

[self.multicastSocket sendData:d toHost:@"224.0.1.1" port:12345 withTimeout:-1 tag:11]; 

self.socket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()]; 

//omitted error checking 
[self.socket bindToPort:12345 error:&err]; 
[self.socket joinMulticastGroup:@"224.0.1.1" error:&err]; 
[self.socket beginReceiving:&err]; 

서버. 블루투스를 통해 어떻게 작동합니까? 내가 뭉치를 봤어 아무것도 찾을 수 없습니다 ... 두 개의 별도의 소켓을 만들어야합니까? 하나는 와이파이 인터페이스에 바인딩하고 다른 하나는 블루투스 인터페이스에 바인딩됩니까?

편집 : 나는 근본적인 것에 대해 혼란 스럽습니까? 이것은 가능해야합니다. GameKit의 GKSession이 바로이 작업을 수행합니다.

답변

1

BT 프로토콜을 통한 BT 스택 액세스가 누락되었다고 생각합니다. 또한 멀티 캐스트는 네트워크 장치 (라우터)를 사용하여 이러한 그룹 및 등록을 관리합니다. BT는 ZeroConf 네트워크 (Wi-Fi에서도 작동 할 수 있음) 개념을 요구하지만 피어 투 피 방식으로 관리됩니다. GameKit보다 소켓 레벨에 가까운 구현을 위해 Bonjour 또는 Dnssd를 살펴보십시오.