IOS编程Socket连接处理

#pragma mark - Connection management

- (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode
{
#pragma unused(stream)
   
    switch(eventCode) {
           
        case NSStreamEventOpenCompleted: {
            self.streamOpenCount += 1;
            assert(self.streamOpenCount <= 2);
           
           
            if (self.streamOpenCount == 2) {
               
                [self.server deregister];
            }
        } break;
           
        case NSStreamEventHasSpaceAvailable: {
            assert(stream == self.outputStream);
            // do nothing
        } break;
           
        case NSStreamEventHasBytesAvailable: {
            uint8_t     buff[1024];
            NSInteger   len;
           
            assert(stream == self.inputStream);
           
            len = [self.inputStream read:buff maxLength:sizeof(buff)];
            if (len <= 0) {
                // Do nothing; we'll handle EOF and error in the
                // NSStreamEventEndEncountered and NSStreamEventErrorOccurred case,
                // respectively.
            } else {
                // We received a remote tap update, forward it to the appropriate view
                //NSString *msg = [[NSString alloc]initWithBytes:buff length:len encoding:NSUTF8StringEncoding];
               
                NSMutableData *data = [NSMutableData dataWithBytes:buff length:len];
                NSString *sendStr = @"Server:ReceiveOK";
                [self send:sendStr];
                //int msg;
                //NSString *msg = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
                //[data getBytes:&msg length:len];
                //[data getBytes:&msg length:sizeof(msg)];
//               
//                NSMutableString *hex = [NSMutableString stringWithCapacity:[data length]];
//               
//                for (int i=0; i < [data length]; i++) {
//                    [hex appendFormat:@"%02x", [data bytes][i]];
//                }
               
               
               
               
               
               
               
              NSString *msg = @"";
                const void *datas = [data bytes];
                for (int i=0; i < [data length]; i+=sizeof(uint16_t)) {
                    uint16_t lem = OSReadBigInt16(datas, i);
                    msg = [msg stringByAppendingFormat:@"%02x",lem];//[hex appendFormat:@"%02x", [data bytes][i]];
                }
               
               
               
               
                AppDelegate *app = (AppDelegate *)[UIApplication sharedApplication].delegate;
                //uint32_t msg;
                [app.mainVC displayResultInLabel:LABEL_RECEIVE result:msg];//[NSString stringWithFormat:@"%02x",[msg intValue]]];
               
               [SDKAgent handleReceiveData:data];
               
            }
        } break;
           
        default:
            assert(NO);
            // fall through
        case NSStreamEventErrorOccurred:
            // fall through
        case NSStreamEventEndEncountered: {
            [self setUpNewState];
        } break;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值