网络编程:Socket协议和特性

57 阅读1分钟
int socket(int domain, int type, int protocol);

domain: 协议族信息 type: 数据传输类型 protocol: 通信中使用的协议信息

协议族

PF_INET:IPv4协议族最常用 套接字最终使用的协议是通过第三个参数传递的

10230BFE-DA8D-4A3A-BAFA-AFAAA5AC504E.png

套接字类型

  • SOCK_STREAM: 面向连接(stream socket)
  • SOCK_DGRAM: 面向消息(datagram socket)

面向连接

  • 传输过程数据不会丢失
  • 按顺序到达
  • 传输的数据不存在数据边界 什么是不存在数据边界? 不存在数据边界:传输端可能多次调用write()来发送数据,但接收端因为有字节数组缓存的原因,可以在缓存满的时候仅调用一次read()读取所有发送过来的数据。 总结:可靠的、按序传递的基于字节的面向连接的数据传输方式

面向消息

  • 强调快速传输而非传输顺序
  • 数据可能丢失或损毁
  • 数据有边界
  • 限制每次传输大小

面向连接的套接字创建

int tcpsock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);

面向消息的套接字创建

int tcpsock = socket(PF_INET, SOCK_STREAM, IPPROTO_UDP);