html模板网站,网络门店管理系统登录,wordpress 排除置顶,品牌建设指标考核2023年8月3日#xff0c;周四下午 目录
函数原型参数domain参数type参数protocol举例说明参数type和参数protocol之间的关系 函数原型
#include sys/socket.hint socket(int domain, int type, int protocol);参数domain
domain是“域”的意思#xff0c;其值为AF…2023年8月3日周四下午 目录
函数原型参数domain参数type参数protocol举例说明参数type和参数protocol之间的关系 函数原型
#include sys/socket.hint socket(int domain, int type, int protocol);参数domain
domain是“域”的意思其值为AF_INET
在Linux系统中domain参数用于指定套接字的协议域protocol domain它定义了套接字通信的协议族。
以下是Linux系统中一些常见的domain值
AF_UNIXUnix 域协议域用于本地通信Inter-process communicationIPC。它使用文件路径作为套接字地址用于同一台机器上的进程间通信。AF_INETIPv4 协议域用于 Internet 地址族。这是最常见的协议域用于基于 IPv4 的网络通信。AF_INET6IPv6 协议域用于 IPv6 地址族。这是用于基于 IPv6 的网络通信。AF_PACKET用于原始网络数据包的协议域。它允许应用程序直接访问网络帧适用于网络协议分析和数据包捕获等场景。AF_BLUETOOTH蓝牙协议域用于蓝牙通信。AF_X25X.25 协议域用于 X.25 网络协议。AF_NETLINKNetlink 协议域用于 Linux 内核与用户空间进程之间的通信。AF_PACKET原始数据链路层套接字允许应用程序直接访问数据链路层帧。 参数type
type指定套接字的类型可以是以下值之一 SOCK_STREAM流套接字用于可靠、面向连接的服务。对应于 TCP 协议。 SOCK_DGRAM数据报套接字用于无连接、不可靠的服务。对应于 UDP 协议。 SOCK_SEQPACKET顺序数据包套接字在 SCTP 协议中使用。 SOCK_RAW原始套接字用于直接访问底层网络协议。可以自定义协议头部并发送。 SOCK_RDM可靠数据报套接字很少使用。 SOCK_PACKET废弃的套接字类型已经不再使用。 参数protocol
在socket函数中protocol参数用于指定套接字使用的协议。
协议protocol是一组规则和约定用于在网络中的不同节点之间进行通信和数据交换。
下面是一些常见的protocol参数值及其对应的协议
IPPROTO_TCPTCPTransmission Control Protocol协议。它是一种面向连接的、可靠的、基于字节流的传输协议用于提供可靠的数据传输。IPPROTO_UDPUDPUser Datagram Protocol协议。它是一种无连接的、不可靠的、基于数据报的传输协议用于提供快速的数据传输但不保证数据的可靠性和顺序性。IPPROTO_SCTPSCTPStream Control Transmission Protocol协议。它是一种面向连接的、可靠的、基于消息的传输协议提供了可靠的数据传输和流量控制等功能。IPPROTO_ICMPICMPInternet Control Message Protocol协议。它是一种网络层协议用于在网络中传递控制信息和错误报文如网络不可达、请求超时等。IPPROTO_IGMPIGMPInternet Group Management Protocol协议。它是一种组播协议用于在 IP 网络中进行组播组的管理和维护。IPPROTO_RAW原始 IP 协议。它允许应用程序直接访问网络层的数据可用于构造和发送自定义的 IP 报文。
需要注意的是protocol参数的具体取值取决于所选择的协议域domain和套接字类型type。在某些情况下可以将protocol设置为0表示使用默认协议。此时系统会根据协议域和套接字类型自动选择适合的协议。 举例说明
// 创建 TCP 套接字
int tcpSocket socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);// 创建 UDP 套接字
int udpSocket socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);// 创建 ICMP 套接字
int icmpSocket socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);// 创建 SCTP 套接字
int sctpSocket socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP);// 创建 RAW 套接字
int rawSocket socket(AF_INET, SOCK_RAW, IPPROTO_RAW);// 创建 IGMP 套接字
int igmpSocket socket(AF_INET, SOCK_RAW, IPPROTO_IGMP); 参数type和参数protocol之间的关系
一般来说
SOCK_STREAM 对应 IPPROTO_TCPSOCK_DGRAM 对应 IPPROTO_UDPSOCK_SEQPACKET 对应 IPPROTO_SCTPSOCK_RAW 对应 IPPROTO_ICMP、IPPROTO_RAW和IPPROTO_IGMP
由此你可以大概知道当Linux中的socket函数的参数domain和参数type确定后参数protocol该怎么选。