Aqu*_*irl 2 sockets linux udp tcp
http://linux.die.net/man/2/socket
该协议指定了与套接字一起使用的特定协议.通常,只有一个协议支持给定协议族中的特定套接字类型,在这种情况下协议可以指定为0.但是,可能存在许多协议,在这种情况下,必须在此指定特定协议方式.要使用的协议号特定于要进行通信的"通信域";
http://linux.die.net/man/5/protocols
字段描述如下:
protocol是协议的本机名称.例如ip,tcp或udp.
当我们已经指定第二个参数sock dgram或sock stream时,为什么我们还需要协议参数?
存在或可以存在许多不同的数据报或流协议.对于流协议,AF_INET和AF_INET6域(当您传递0时)的典型默认值是TCP,而对于数据报协议,则是UDP.
另一个有趣的协议是SCTP,它可以在数据报和流模式下运行,因此您可以通过以下任一方式创建SCTP套接字:
socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP);
socket(AF_INET, SOCK_DGRAM, IPPROTO_SCTP);
Run Code Online (Sandbox Code Playgroud)
一个UDP-精简版变种可以被创建
socket(AF_INET, SOCK_DGRAM, IPPROTO_UDPLITE);
Run Code Online (Sandbox Code Playgroud)
另请注意,socket()是一般调用,可用于创建基于非IP的套接字,例如用于蓝牙,红外,CANbus协议,这些协议可能提供您可以使用的不同协议.
| 归档时间: |
|
| 查看次数: |
1329 次 |
| 最近记录: |