C++网络编程,Socket 套接字基础知识

目录

      • 1.1 分类:
      • 1.2 概念:
      • 1.3 套接字类型
        • 1.3.1 流套接字
        • 1.3.2 数据包套接字
        • 1.3.3 原始套接字
      • 1.4 套接字地址
      • 1.5 I/O工作模式

套接字概念

1.1 分类:

windows网络编程可分为用户态网络编程与内核态网络编程。用户态网络编程可分为TCP套接字编程、UDP网络编程与原始套接字编程。windows与UNIX中具有一套套接字,windows中的称为windows套接字,unix中有两种——伯克利套接字、传输层接口。

1.2 概念:

套接字也称套接口,是TCP/IP网络编程中的基本操作单元,可看作不同主机之间的进程之间相互通信的端点。

1.3 套接字类型

1.3.1 流套接字

提供面向对象、可靠的数据传输服务,可以保证无差错、无重复发送,并能够按照顺序接收。流套接字使用TCP协议。

1.3.2 数据包套接字

无连接的服务,不能保证数据传输的可靠性,数据在传输过程中丢失或者数据重复,且不能保证按顺序接收数据。数据包套接字使用UDP协议进行数据的传输

1.3.3 原始套接字

原始套接字允许对较低层的协议直接访问,比如IP、ICMP协议,可用来操作网络层和传输层的应用。网络监听技术常常使用原始套接字。
区别:原始套接字可以读写内核中没有处理的IP数据报,流套接字只能读取TCP协议的数据,数据报套接字只能读取UDP协议的数据。

1.4 套接字地址

分为通用套接字地址、专用套接字地址,不同类型的地址可以相互转换。

1.5 I/O工作模式

windows下,套接字有两种输入和输出模式:阻塞(同步)模式、非阻塞(异步)模式。
非阻塞(异步)模式实现比阻塞(同步)模式复杂,Microsoft提出了5中套接字I/O模式:
1)选择模式:select模型,主要利用Select函数实现对I/O的管理
2)异步选择模式:WSAAsyncSelcet模型
3)事件选择模式:WSAEventSelect模型
4)重叠I/O模式:该模型可以要求操作系统进行传输述,重叠I/O模型比以上3种更能达到系统的最佳性能
5)完成端口模式:性能最强大的I/O模型,一个应用程序需要管理多个套接字时,采用该模式。

你可能感兴趣的:(网络,c++,websocket)