NSNetService 表示一個(gè)網(wǎng)絡(luò)服務(wù)∽肀睿可以代表你的應(yīng)用程序發(fā)起的一個(gè)網(wǎng)絡(luò)服務(wù)(也可以是別人的一個(gè)網(wǎng)絡(luò)服務(wù))。
這個(gè)類的主要功能:1.可以讓應(yīng)用程序發(fā)布服務(wù) 2.可以解析對(duì)應(yīng)服務(wù)的套接字地址敢课。
NSNetServiceBrowser 類用來獲取網(wǎng)絡(luò)上的網(wǎng)絡(luò)服務(wù)對(duì)象(NSNetService)拯田。
獲取對(duì)應(yīng)的NSNetService對(duì)象后,就可以去進(jìn)行連接等操作
簡(jiǎn)單的使用步驟(以局域網(wǎng)對(duì)戰(zhàn)為例):
玩家A來創(chuàng)建房間:
- 初始化創(chuàng)建NSNetService實(shí)例垃瞧。
- (instancetype)initWithDomain:(NSString *)domain type:(NSString *)type name:(NSString *)name port:(int)port;
(注:默認(rèn)創(chuàng)建完后蔫劣,該實(shí)例對(duì)象是在當(dāng)前線程的Runloop的默認(rèn)mode下運(yùn)行等待的。)
- 將我們創(chuàng)建的服務(wù)(NSNetService實(shí)例)發(fā)布出去
這兩個(gè)方法都可以个从。
- (void)publish; // 發(fā)布使用默認(rèn)配置
- (void)publishWithOptions:(NSNetServiceOptions)options; // 可以自定義更多的設(shè)置
3.等待玩家B的進(jìn)入脉幢。
4.玩家B首先要獲取網(wǎng)絡(luò)上的所有網(wǎng)絡(luò)服務(wù)。
NSNetServiceBrowser 實(shí)例化信姓,并設(shè)置代理鸵隧。
5.玩家B選擇其中一個(gè)網(wǎng)絡(luò)服務(wù),開始解析對(duì)應(yīng)的服務(wù)地址意推。
NSNetService *service = ……;
service.delegate = self;
[service resolveWithTimeout:20];
6.在service的代理回調(diào)里獲取對(duì)應(yīng)服務(wù)的地址,然后利用socket進(jìn)行連接珊蟀。