网络编程学习笔记 二- 套接字协议及数据传输特性

int socket(int domin, int type, int protocol)   //Linux下创建套接字函数
SOCKET socket(int af, int type, int protocol)   //Windows创建套接字函数

上边两个函数均是创建套接字的函数,其实这两个函数的形参都一样,这两个函数唯一不同的地方就在于函数的返回值类型不同。Windows上用SOCKET结构体保存返回值类型(其实可以用int,但为了以后的扩展性,就用SOCKET把)

这些的形参分别代表什么呢?

协议族

两个创建socket函数的第一个形参均为协议族,那么都有哪些协议族呢?

名称协议族
PF_INETIPv4互联网协议族
PF_INET6IPv6互联网协议族
PF_LOCAL本地通信的UNIX协议族
PF_PACKET底层套接字的协议族
PF_IPXIPX Novell协议族

套接字类型

函数中的第二个参数,指的就是套接字类型,套接字类型有一下几个:

面向连接的套接字(SOCK_STREAM)

面向连接的套接字有以下特点:
1. 传输过程中数据不会消失
2. 按序传输数据
3. 传输的数据不存在数据边界

面向消息的套接字(SOCK_DGRAM)

特点如下:
1. 强调快读传输而非顺序传输
2. 传输的数据可能丢失也可能损毁
3. 传输的数据有数据边界
4. 限制每次传输的数据大小

什么是数据边界
收发数据的套接字内部有缓冲(buffer),通过套接字传输的数据将保存到此处。因此收到数据并不意味着马上读取数据,有可能在缓冲区充满后一次性取走,也有可能多次读取。

第三个参数

这个参数决定最终采用的协议,虽然前两个参数已经设定了协议族和套接字数据传输方式,但是同一个协议族中很可能有多个传输方式一样的协议,此时,我们就需要制定协议了,例如:
TCP协议 : IPPROTO_TCP
UDP协议 : IPPROTO_UDP

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值