IOS 网络编程之BSD Socket

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>



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值