对GCDAsyncSocket的初步了解
这个第三方是对Socket编程的封装,运用于iOS及OS系统的网络编程。
服务端代码
开启一个Socket
//需要使用一个强引用指向该socket
GCDAsyncSocket *socket = [[GCDAsyncSocket alloc]initWithDelegate:self delegateQueue:dispatch_get_global_queue(0, 0)];
//指定端口号
BOOL success = [socket acceptOnPort:5288 error:&error]; //指定端口
当开启成功时会返回YES,当端口被占用时会返回NO.
监听客户端的连接
当有客户端连接到服务器,我们可以实现代理方法来拿到客户端的socket。
//实现代理方法
- (void)socket:(GCDAsyncSocket *)serviceSock didAcceptNewSocket:(GCDAsyncSocket *)clientSocket{
//-1是指不超时。
[clientSocket readDataWithTimeout:-1 tag:0];
}
处理客户端发送的数据
当客户端发送数据过来时,我们可以通过代理方法来获取
- (void)socket:(GCDAsyncSocket *)clientSocket didReadData:(NSData *)data withTag:(long)tag
{
NSString *str = [[NSString alloc ]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
}
关闭连接
结束会话
[self exitWithSocket:clientSocket];