對GCDAsyncSocket的初步了解
這個第三方是對Socket編程的封裝巫击,運用于iOS及OS系統(tǒng)的網(wǎng)絡(luò)編程霉囚。
服務(wù)端代碼
開啟一個Socket
//需要使用一個強引用指向該socket
GCDAsyncSocket *socket = [[GCDAsyncSocket alloc]initWithDelegate:self delegateQueue:dispatch_get_global_queue(0, 0)];
//指定端口號
BOOL success = [socket acceptOnPort:5288 error:&error]; //指定端口
當開啟成功時會返回YES,當端口被占用時會返回NO.
監(jiān)聽客戶端的連接
當有客戶端連接到服務(wù)器墙懂,我們可以實現(xiàn)代理方法來拿到客戶端的socket。
//實現(xiàn)代理方法
- (void)socket:(GCDAsyncSocket *)serviceSock didAcceptNewSocket:(GCDAsyncSocket *)clientSocket{
//-1是指不超時扮念。
[clientSocket readDataWithTimeout:-1 tag:0];
}
處理客戶端發(fā)送的數(shù)據(jù)
當客戶端發(fā)送數(shù)據(jù)過來時损搬,我們可以通過代理方法來獲取
- (void)socket:(GCDAsyncSocket *)clientSocket didReadData:(NSData *)data withTag:(long)tag
{
NSString *str = [[NSString alloc ]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
}
關(guān)閉連接
結(jié)束會話
[self exitWithSocket:clientSocket];