麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

iOS-移動端SocketUDP協議廣播機制的實現

2019-11-14 20:24:29
字體:
來源:轉載
供稿:網友

1.前言  

   什么是UDP協議廣播機制?
 
   舉一個例, 例如在一群人群中,一個人要找張三,于是你向人群里大喊一聲(廣播):“誰是張三”
  如果它是張三,它就會回應你,在網絡中也是一樣的。
 
 
   UDP廣播機制的應用場景:
 
    若干個客戶端,在局域網內(不知道ip的情況下) 需要在很多設備里需找特有的設備,比如服務器,抑或是某個打印機,傳真機等。
    
    假設我現在準備將服務器裝在永不斷電的iPad上。
    若干個客戶端iPhone 一激活,就要來向所有設備廣播,誰是服務器,是服務器的話,請把IP地址告訴我。然后我就去連接,然后進入長連接,后臺接受消息。

 

2.UDP廣播機制的實現  

注:
 iPad:服務器端  iPhone:客戶端
 

2.1.服務器端(iPad)的實現  


2.1.1.先去github上下載 AsyncUdpSocket.h框架包  

www.github.com

2.1.2.初始化udp  

@interface QCViewController (){	 AsyncUdpSocket *asyncUdpSocket;}      asyncUdpSocket = [[AsyncUdpSocket alloc] initWithDelegate:self];

2.1.3.綁定端口  

   NSError *err = nil;    [asyncUdpSocket enableBroadcast:YES error:&err];    [asyncUdpSocket bindToPort:9527 error:&err];   //啟動接收線程    [asyncUdpSocket receiveWithTimeout:-1 tag:0];

 2.1.4.實現代理方法  

//已接收到消息- (BOOL)onUdpSocket:(AsyncUdpSocket *)sock didReceiveData:(NSData *)data withTag:(long)tag fromHost:(NSString *)host port:(UInt16)port{    if(data是找服務器的){              //根據客戶端給的IP,利用TCP或UDP 相互連接上就可以開始通訊了             }  return YES;}//沒有接受到消息-(void)onUdpSocket:(AsyncUdpSocket *)sock didNotReceiveDataWithTag:(long)tag dueToError:(NSError *)error{}//沒有發送出消息-(void)onUdpSocket:(AsyncUdpSocket *)sock didNotSendDataWithTag:(long)tag dueToError:(NSError *)error{ }//已發送出消息-(void)onUdpSocket:(AsyncUdpSocket *)sock didSendDataWithTag:(long)tag{}//斷開連接-(void)onUdpSocketDidClose:(AsyncUdpSocket *)sock{}

 

2.2.客戶端(iPhone)的實現  

注:實現步驟與服務器端相似

2.2.1.初始化udp   

@interface QCViewController (){	 AsyncUdpSocket *asyncUdpSocket;}      asyncUdpSocket = [[AsyncUdpSocket alloc] initWithDelegate:self];

2.2.2.綁定端口    

   NSError *err = nil;    [asyncUdpSocket enableBroadcast:YES error:&err];    [asyncUdpSocket bindToPort:9527 error:&err];

2.2.3.實現代理方法  

//已接收到消息- (BOOL)onUdpSocket:(AsyncUdpSocket *)sock didReceiveData:(NSData *)data withTag:(long)tag fromHost:(NSString *)host port:(UInt16)port{ return YES;}//沒有接受到消息-(void)onUdpSocket:(AsyncUdpSocket *)sock didNotReceiveDataWithTag:(long)tag dueToError:(NSError *)error{}//沒有發送出消息-(void)onUdpSocket:(AsyncUdpSocket *)sock didNotSendDataWithTag:(long)tag dueToError:(NSError *)error{ }//已發送出消息-(void)onUdpSocket:(AsyncUdpSocket *)sock didSendDataWithTag:(long)tag{}//斷開連接-(void)onUdpSocketDidClose:(AsyncUdpSocket *)sock{}

 

2.2.4.廣播尋找  

注:廣播iP地址為 255.255.255.255

       NSString *str = @"誰是服務器?我的IP是:192.168.80.103";       NSData *data=[str dataUsingEncoding:NSUTF8StringEncoding];       [asyncUdpSocket sendData:data                          toHost:@"255.255.255.255                            port:9527                     withTimeout:-1                               tag:0]; 

 

作者: 清澈Saup
出處: http://www.companysz.com/qingche/
本文版權歸作者和博客園共有,歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文連接。

 
 
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产99视频在线观看 | 91一区二区三区久久久久国产乱 | 久久久成人精品视频 | 精品国产乱码久久久久久久 | 国产精品91久久久 | 国产亚洲精品久久午夜玫瑰园 | 人成免费a级毛片 | 99亚洲伊人久久精品影院红桃 | 免费观看三级毛片 | 日本视频免费看 | 男男啪羞羞视频网站 | 亚洲欧美国产视频 | 毛片视频在线免费观看 | 操碰视频在线观看 | 成人性视频在线 | 高清视频91| www.理论片| 伊人午夜| 国产一区二区三区四区五区加勒比 | 操操电影 | 国产激情网 | 成人在线观看一区 | 特级黄毛片 | 黄在线观看在线播放720p | 免费国产成人高清在线看软件 | 娇喘视频在线观看 | bt 自拍 另类 综合 欧美 | 欧美成人免费在线视频 | 日本在线视频一区二区三区 | 成人在线观看免费观看 | 成av人在线观看 | 中文字幕在线观看网址 | 91午夜理伦私人影院 | 欧美18—19sex性护士中国 | 九九热在线视频免费观看 | 369看片你懂的小视频在线观看 | 国产精品av久久久久久网址 | 色综合视频网 | 性欧美在线视频 | 蜜桃免费在线 | av成人免费观看 |