CocoaAsyncSocket下載
CocoaAsyncSocket支持tcp和udp。其中:
*AsyncSocket類是支持TCP的
*AsyncUdpSocket是支持UDP的
1、導(dǎo)入文件GCDAsyncSocket
2、導(dǎo)入頭部文件
3、端口號和主機(jī)ip
NSString *host = @"127.0.0.1";
int port = 12345;
4、創(chuàng)建一個socket對象
//將GCDAsynSocket設(shè)置為全局變量
GCDAsyncSocket *socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)];
delegate:一半看到代理我們都寫self
delegateQueue:
全局隊列(代理的方法是在子線程被調(diào)用)
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)
主隊列(代理的方法會在主線程被調(diào)用)
dispatch_get_main_queue()
<b>如果代理里的動作 是 耗時的動作,就 不能 在主線程中調(diào)用,要 在子線程中</b>
<b>如果代理里的動作 不 是耗時的動作,就 能 在主線程中調(diào)用,不需要 在子線程中</b>
優(yōu)先級 我們設(shè)置默認(rèn) 開發(fā)者使用默認(rèn)
5、連接
NSError *error = nil;
[socket connectToHost:host onPort:port error:&error];
這里可以輸出error
6、如何知道連接成功失敗
6.1、代理GCDAsyncSocketDelegate
6.2、實現(xiàn)代理方法
didConnectToHost 連接成功
didDisconnect 斷開連接(如果error有值,連接失敗,如果沒值,正常斷開)
connect、read、write、disconnect,GCDAsyncSocket
write:
[_socket writeData:[msg dataUsingEncoding:NSUTF8StringEncoding] withTimeout:-1 tag:101];
//withTimeout: 超時時間 -1 表示不超時
//tag: 一個標(biāo)識
代理方法 didWriteDataWithTag 數(shù)據(jù)發(fā)送成功 手動讀取(readDataWithTag) 才會調(diào)用read代理方法 (didReadData)
read:
1、實現(xiàn)代理方法 didReadData