ios开发 Socket编程

ios开发中 socket编程 根据使用库的不同有不同方式, 比如BSD socket,CFSocket都可以创建socket, CFStream对CFSocket进行了封装,把读写流与socket进行了绑定。这些API都是C的库。但是CFReadStream和CFWriteStream可以转换为object-c中的NSInputStream, NSOutputStream。然后就可以利用NSStream的delegate进行读写操作。

首先可以用创建与socket进行了绑定的CFStream,可以用多种方式创建,比如host,NetService,Native socket 也可以用FTP/http url, HTTPRequest等

CFStreamCreatePairWithSocket

CFStreamCreatePairWithSocketToHost

CFStreamCreatePairWithSocketToNetService

CFReadStreamCreateForHTTPRequest

CFReadStreamCreateWithFTPURL

有了CFStream,可以这样进行转换:

    CFReadStreamRef     readStream;
    CFWriteStreamRef    writeStream;
    NSInputStream *inputStreamPtr  = CFBridgingRelease(readStream);
    NSOutputStream *outputStreamPtr = CFBridgingRelease(writeStream);

有了NSStream, 然后设置delegate, schedule到runloop中去,再open:

        self.networkStream.delegate = self;
        [self.networkStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
        [self.networkStream open];

最后就是实现NSStreamDelegate的函数:

- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode;

然后在函数内部根据不同的event进行操作:

NSStreamEventHasBytesAvailable表示有数据可读。

NSStreamEventHasSpaceAvailable表示可以写数据。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值