您的位置:首页 > 理论基础 > 计算机网络

IOS 网络编程之BSD Socket

2013-06-23 11:58 633 查看
socket 使用流程图

借用别人的流程图

1.面向连接的套接字的系统调用时序图



无连接协议的套接字调用时序图



socket可以认为是一种通信描述符,是一个五元组:协议,双方的ip地址,双方的端口。

类型有三种(1和2两种类型统称为标准套接字):

1,流套接字(sock_stream):其使用传输控制协议(tcp),可以实现可靠的数据服务,能够实现无差错|无重复发送|并按顺序传达。该套接字适合传输大量的数据,但不支持广播和多播方式。

2,数据报套接字(sock_dgram):其使用用户数据报协议(udp),提供一种无连接服务,是一种不可靠方法,但其开销比使用流套接字低,而且支持广播和多播方式。

3,原始套接字(sock_saw) 能够对较低层次的协议直接访问,网络监听技术很大程度上依赖于它,可以读写内核没有处理的ip数据报。主要作用在于避开tcp/ip处理机制,被传送的数据可以被直接传送给需要它的应用程序。

小端:存储方式是低位优先

大端:存储方式是高位优先

网络字节顺序采用大端方式

相关函数解释

server:

socket:确定所用的协议

bind:实现与本地ip和端口号的绑定,即确定本地ip和端口号

listen:侦听,即准备好接收连接,服务器设置缓冲区;

accept:服务器接受客户端请求建立连接,实现与远程ip和端口号的关联

client:

socket与bind如上,图2中bind的标识写错了

connect:实现与远程ip和端口号的关联

(udp方式时无需建接连接,双方都可以为服务端,先发消息一方为客户端,客户端可以不用bind绑定ip与端口,而由系统指定,但充当服务器一方则要bind,另外,udp时也可以使用connect,但其作只是告诉内核并由内核保存,以便在数据传输过程中可以使用send与rece函数)
上客户端访问代码
头文件
#import <netdb.h>
#import <arpa/inet.h>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: