c# socket SocketType枚举简介


SocketType枚举简介

在c# socket应用开发中 ,我们需要先初始化一个socket对象,如下:

  Socket newSock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,ProtocolType.Tcp);

这里我们需要指定socket对外的地址类型,和地址类型 协议类型相匹配的socket类型,
下文将主要介绍socket类型

1.1 Unknown类型
未知socket类型


1.2 Stream
支持可靠、双向、基于连接的字节流,而不重复数据,也不保留边界。
此类型的 Socket 与单个对方主机进行通信,并且在通信开始之前需要远程主机连接。
需要同protocoltype.tcp类型 一起使用。


1.3 Dgram
支持数据报,即最大长度固定(通常很小)的无连接、不可靠消息。
消息可能会丢失或重复并可能在到达时不按顺序排列。
SocketType.Dgram 类型在发送和接收数据之前不需要任何连接,可以同时同多个主机进行连接通信,Dgram通常同UDp协议和addressFamily.InterNetwork一起初始化。


1.4 Raw
支持对基础传输协议的访问。
SocketType.Raw,可以使用Internet 控制消息协议 (ProtocolType.Icmp) 和 Internet 组管理协议 (ProtocolType.Igmp)进行通信。
在发送时,您的应用程序必须提供完整的 IP 标头。所接收的数据报在返回时会保持其 IP 标头和选项不变。


1.5 Rdm
支持无连接、面向消息、以可靠方式发送的消息,并保留数据中的消息边界。
RDM(以可靠方式发送的消息)消息会依次到达,不会重复。此外,如果消息丢失,将会通知发送方。
使用SocketType.Rdm 初始化 Socket,则在发送和接收数据之前无需建立远程主机连接。
使用SocketType.Rdm,可以与多个对方主机进行通信。


1.6 Seqpacket
在网络上提供排序字节流的面向连接且可靠的双向传输。
SocketType.Seqpacket 不重复数据,它在数据流中保留边界。SocketType.Seqpacket
类型的 Socket 与单个对方主机通信,在通信开始之前需要建立远程主机连接。


相关阅读:
c# socket 应用(一) UDP
Socket简介