iOS Socket深入剖析

1.定义:

Socket是网络服务提供的一种套接字,通信两端都是Socket,网络通信通过Socket进行IO直接的传输,是一种长连接,让应用程序可以进行异步模式,提高速率,需要数据的时候才进行数据接收。

2.既然要了解Socket,就要对传输协议有一定的了解,可以把socket理解为封装TCP/IP协议API,TCP协议属于可靠性传输协议,需要进行三次握手(客户端发送信息到服务器,服务器响应发送到客户端,客户端响应后发送到服务器) UDP协议属于不可靠协议,是因为他不需要进行响应,就像知道一个大概的位置,然后就传送过去,每次能传64K左右的东西,传输速度很快,但是有时会丢包的情况。  所以视频,或则QQ群聊会用到UDP协议,QQ在单人聊天的时候,应该是进行TCP协议,所以个人认为QQ采用的是混合模型。

3.网络通信的三大要素:IP地址,传输协议,端口号。

IP地址:设备的唯一标示符。

传输协议:TCP UDP等

端口号:1-1023都是系统自带,如果个人要用的话需要1024以后的。需要熟记几个端口号,80,25,21等这里就不一一叙述。

4.开始进行代码

iOS主要按照NSStream(流)来发送和接收数据,可以设置流的代理,对流的状态变化做出相应连接建立,设置网络连接,绑定到主机和端口号,设置输入输出代理,监听数据流的状态,将输入输出添加至运行循环,打开输入输出流。

发送消息给服务器,有可读取字节时,读取服务器返回的内容,到达流末尾时,关闭流,同时并从主运行循环中删除。

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

    

    switch (eventCode) {

        case NSStreamEventOpenCompleted:

            NSLog(@"完成");

            break;

        case NSStreamEventHasBytesAvailable:

            NSLog(@"字节可读");

            [self readData];

            break;

        case NSStreamEventHasSpaceAvailable:

            NSLog(@"可发送字节");

            break;

        case NSStreamEventErrorOccurred:

            NSLog(@"连接错误");

            break;

        case NSStreamEventEndEncountered:

            NSLog(@"断开连接");

            [self closeConnect];

            break;

            

            

        default:

            NSLog(@"异常错误");

            break;

    }

    

}

- (void)closeConnect{

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值