ios开发教程socket的原理和使用

ios开发教程socket的原理和使用

ID:1356575

大小:393.00 KB

页数:12页

时间:2017-11-10

ios开发教程socket的原理和使用_第1页
ios开发教程socket的原理和使用_第2页
ios开发教程socket的原理和使用_第3页
ios开发教程socket的原理和使用_第4页
ios开发教程socket的原理和使用_第5页
资源描述:

《ios开发教程socket的原理和使用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、http://www.mobiletrain.org/iOS开发教程Socket的原理和使用1.iOS网络编程层次结构iOS网络编程层次结构分为三层,从上往下依次为:-Cocoa层:NSURL,Bonjour,GameKit,WebKit-CoreFoundation层:基于C的CFNetwork和CFNetServices-OS层:基于C的BSDSocketCocoa层:是最上层的基于Objective-C的API,比如URL访问,NSStream,Bonjour,GameKit等,这是大多数情况下我们常用的API。Cocoa层是基于CoreFoundation

2、实现的。CoreFoundation层:因为直接使用socket需要更多的编程工作,所以苹果对OS层的socket进行简单的封装以简化编程任务。该层提供了CFNetwork和CFNetServices,其中CFNetwork又是基于CFStream和CFSocket。OS层:最底层的BSDSocket提供了对网络编程最大程度的控制,但是编程工作也是最多的。因此,苹果建议我们使用CoreFoundation及以上层的API进行编程。本文将介绍如何在iOS系统下使用最底层的Socket进行编程。2.什么是SocketSocket是应用层与TCP/IP协议族通信的中间软

3、件抽象层,它是一组接口。北京千锋互联科技有限公司版权所有http://www.mobiletrain.org/2.1TCP和UDP的区别TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。关于TCP是一种流模式的协议,UDP是一种数据包模式的协议,这里要说明一下,TCP是面向连接的,也就是说,在连接持续的过程中,Socket中收到的数据都是由同一台主机发出的(劫持什么的不考虑),因此,知道保证数据是有序的到达就

4、行了,至于每次读取多少数据自己看着办。而UDP是无连接的协议,也就是说,只要知道接收端的IP和端口,且网络是可达的,任何主机都可以向接收端发送数据。这时候,如果一次能读取超过一个报文的数据,则会乱套。比如,主机A向发送了报文P1,主机B发送了报文P2,如果能够读取超过一个报文的数据,那么就会将P1和P2的数据合并在了一起,这样的数据是没有意义的。2.2常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)北京千锋互联科技有限公司版权所有http://www.mobiletrain.org/。流式是一种

5、面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。2.2.1TCPC/S架构程序设计基本框架2.2.2TCP三次握手北京千锋互联科技有限公司版权所有http://www.mobiletrain.org/最形象理解:>「你瞅啥?」>>「瞅你咋地?」>>「来咱俩唠唠。」>>然后就唠上了。2.2.3TCP四次挥手北京千锋互联科技有限公司版权所有http://www.mobiletrain.org/2.2.4基于TCP的套接字代码实现相关头文件。#include

6、#include#include#include#include服务端实现代码。-(void)socketServer{interr;//1.创建socket套接字//原型:intsocket(intdomain,inttype,intprotocol);//domain:协议族type:socket类型protocol:协议intfd=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);BOOLsuccess=(fd!=-1);if(succ

7、ess){NSLog(@"Socket创建成功");//地址结构体structsockaddr_inaddr;//内存清空memset(&addr,0,sizeof(addr));北京千锋互联科技有限公司版权所有http://www.mobiletrain.org///内存大小addr.sin_len=sizeof(addr);//地址族,在socket编程中只能是AF_INETaddr.sin_family=AF_INET;//端口号addr.sin_port=htons(1024);//按照网络字节顺序存储IP地址addr.sin_addr.s_addr=IN

8、ADDR_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。