套接字类型与协议设置

创建套接字

int socket(int domain, int type, int protocol)

  • domain:套接字中使用的协议族protocol family信息
  • type:套接字数据传输类型信息
  • protocol:计算机间通信中使用的协议信息
  • 返回值:成功返回文件描述符。失败返回-1

协议族(Protocol Family)

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

套接字类型(Type)

  1. 面向连接的套接字SOCK_STREAM,可以比喻成2位工人通过一条传送带传递物品。
  • 传输过程中数据不会丢失
  • 按序传输数据
  • 传输的数据不存在数据边界

不存在数据边界:套接字内部有缓冲(buffer),简而言之就是字符数组。通过套接字传输的数据将保存到该数组中。收到数据并不意味着马上调用read函数。只要不超过数组容量,则有可能数据填充满缓冲后通过一次read函数调用读取全部,也可能分成多次read函数调用进行读取。read函数和write函数的调用次数并无太大意义。

面向连接的套接字会根据接收端的状态传输数据,如果缓冲区被填满,传输端套接字停止传输。如果传输传输出错还会提供重传服务。

可靠的、按序传递的、基于字节的面向连接的数据传输方式。

  1. 面向消息的套接字SOCK_DGRAM,可以比喻成摩托车快递的包裹
  • 强调快速传输而非传输顺序
  • 传输的数据可能丢失也可呢损毁
  • 传输的数据有数据边界
  • 限制每次传输的数据大小

不可靠的、不按序传递的、以数据高速传输为目的的

协议的最终选择

大部分情况下可以向第三个参数传递0。
IPv4协议族面向连接的套接字只有TCP套接字,IPPROTO_TCP
IPv4协议族面向消息的套接字只有UDP套接字,IPPROTO_UDP

Windows平台

SOCKET socket(int af, int type, int protocol)

  • 参数种类及含义与Linux的socket函数完全相同
  • 返回值:成功时返回socket句柄,失败时返回INVALID_SOCKET

实际上,socket函数返回整数型数据,可以通过int型变量接收 。
同样,发生错误时返回INVALID_SOCKET,其实际值为-1.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KIROsola

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值