CocoaAsyncSocket的简单使用

  • CocoaAsyncSocket
    • 目录:Source/GCD:
      • AsyncSocket.h AsyncSocket.m TCP实现
      • AsyncUdpSocket.h AsyncUdpSocket.m UDP实现
      • 使用协议导入相应文件即可,无依赖。
  • TCP的简单使用:
    • 1.创建一个Socket对象
    GCDAsyncSocket *serverSocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_global_queue(0, 0)];
    
    • serverSocket 服务端的Socket只监听有没有客户单请求连接
    • 代理一般写self,队列:代理的方法在哪一个队列里调用
    • 通过代理知道有客户端连接进来
    • 2.绑定端口并监听
      [serverSocket acceptOnPort:3000 error:&error];
      
    • 有客户端socket连接到服务器
      - (void)socket:(GCDAsyncSocket *)sock didAcceptNewSocket:(GCDAsyncSocket *)newSocket
      
      • 第一个socket形参为服务器socket,第二个socket形参为客户端scoket
      • 我们要在这个函数里做以下事情
        • 保存客户端的socket,如果不保存会自动终止连接。客户端socket可以保存在NSMutableArray中。
        • 监听客户端有没有数据上传
          [clientSocket readDataWithTimeout:-1 tag:0];
          
          • 第一个形参代表超时时间,-1代表不超时
    • 读取客户端请求的数据
      -(void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
      
      • 我们要在这个函数里做以下事情
        • 把NSData转换为NSstriing。
          NSString *str =  [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
          
        • 处理请求,返回数据给客户端。
          [clientSocket writeData:[respon
          
        • 每次读完数据后,都要调用一次数据监听。
          [clientSocket readDataWithTimeout:-1 tag:0];
          
  • 两个重要的属性
@property (atomic, readonly) NSString *connectedHost;//客户端IP地址
@property (atomic, readonly) uint16_t  connectedPort;//客户端端口号
  • 原码地址

你可能感兴趣的:(CocoaAsyncSocket的简单使用)