iOS之GCDAsyncUdpSocket

上周說的是tcp socket,這周就來說說udp socket。先介紹下Demo,此次的Demo是用以前看黑馬視頻寫的一個仿QQ聊天的Demo,以它為背景,使用udpSocket,自己給自己發(fā)送消息.

同樣不說原理了,直接解釋代碼:

準(zhǔn)備工作

#import "GCDAsyncUdpSocket.h"遵守協(xié)議<GCDAsyncUdpSocketDelegate>聲明一個屬性@property (strong, nonatomic)GCDAsyncUdpSocket * udpSocket;

創(chuàng)建Socket
_udpSocket = [[GCDAsyncUdpSocket alloc]initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
監(jiān)聽接口&接收數(shù)據(jù)[1]
    NSError * error = nil;
    [_udpSocket bindToPort:udpPort error:&error];
    if (error) {//監(jiān)聽錯誤打印錯誤信息
        NSLog(@"error:%@",error);
    }else {//監(jiān)聽成功則開始接收信息
        [_udpSocket beginReceiving:&error];
    }
udp不用連接,故直接發(fā)送數(shù)據(jù)
[_udpSocket sendData:sendData toHost:ipAddress port:udpPort withTimeout:-1 tag:0];

對于toHost的參數(shù)ipAddress我說明一下,NSString * ipAddress = [self deviceIPAdress];[self deviceIPAdress]方法就是獲取ip地址,具體可參見我另一篇文章《獲取iOS設(shè)備信息(內(nèi)存/電量/容量/型號/IP地址)

看看發(fā)送數(shù)據(jù)結(jié)果://此為GCDAsyncUdpSocket代理方法
- (void)udpSocket:(GCDAsyncUdpSocket *)sock didSendDataWithTag:(long)tag
{
    NSLog(@"發(fā)送信息成功");
}

- (void)udpSocket:(GCDAsyncUdpSocket *)sock didNotSendDataWithTag:(long)tag dueToError:(NSError *)error
{
    NSLog(@"發(fā)送信息失敗");
}
發(fā)送成功就該接收數(shù)據(jù)了://此為GCDAsyncUdpSocket代理方法
- (void)udpSocket:(GCDAsyncUdpSocket *)sock didReceiveData:(NSData *)data fromAddress:(NSData *)address withFilterContext:(id)filterContext
{
    NSLog(@"接收到%@的消息:%@",address,data);//自行轉(zhuǎn)換格式吧
}

udp果然還是比tcp簡單很多啊,到這里就結(jié)束了,最后是Demo,歡迎大家Star.

版權(quán)聲明:本文為 Crazy Steven 原創(chuàng)出品,歡迎轉(zhuǎn)載,轉(zhuǎn)載時請注明出處!


  1. 接收信息有兩種方法,[_udpSocket receiveOnce:&error]此方法是一條一條數(shù)據(jù)接收,用途往往是先發(fā)廣播,接收到信息后使用TCP進(jìn)行長連接,故只接收一條數(shù)據(jù)即可。[_udpSocket beginReceiving:&error]此方法是持續(xù)接收,像本Demo是用來聊天,自然是要持續(xù)接收信息,故使用此方法進(jìn)行接收數(shù)據(jù)。 ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 個人認(rèn)為,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,196評論 0 8
  • ———————————————回答好下面的足夠了---------------------------------...
    恒愛DE問候閱讀 1,844評論 0 4
  • 1.這篇文章不是本人原創(chuàng)的,只是個人為了對這部分知識做一個整理和系統(tǒng)的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,377評論 6 174
  • 1.寫一個NSString類的實現(xiàn) +(id)initWithCString:(c*****t char *)nu...
    韓七夏閱讀 3,875評論 2 37
  • 本文出自 Eddy Wiki ,轉(zhuǎn)載請注明出處:http://eddy.wiki/interview-java.h...
    eddy_wiki閱讀 2,299評論 0 14

友情鏈接更多精彩內(nèi)容