c - 零通常适合协议吗?
问题描述
我一直在阅读有关使用套接字的 GNU、libc 手册。根据此处的文档
文档中的确切措辞是,
零通常适用于协议。
我见过几个代码示例,其中工程师在实现套接字时将协议设置为 0,而不管使用的协议如何!
int socket (int namespace, int style, int protocol)
请问一下,作者上面的说法是什么意思?我可以感觉到根据作者的陈述,在某些情况下 0 可能不是正确答案,如果是这样,有人可以详细说明这种情况吗?最重要的是,我们从哪里获得协议的价值?协议编号是否有任何标准可供参考?
解决方案
的有效值protocol
取决于namespace
使用的和程序运行的内核。
我假设,因为问题被标记gnu
,你在 linux 下运行。然后,您可以找到有效名称空间的列表,以及指向这些名称空间文档的链接man 'socket(2)'
。例如,您可能会在 Internet 名称空间AM_INET
和AM_INET6
下方找到文档,man 'ip(7)'
并且man 'ipv6(7)'
阅读ip(7)
手册页,您可能会看到AM_INET
支持协议IPPROTO_TCP
和IPPROTO_SCTP
流套接字,以及IPPROTO_UDP
数据IPPROTO_UDPLITE
报套接字。
如果您想进一步挖掘,不同的协议也有自己的联机帮助页
推荐阅读
- powershell - 在脚本中捕获来自 Get-NetRoute 的输出时遇到问题
- linux - Linux 上的二进制可执行文件在哪里?
- google-cloud-platform - Google Cloud Run 并发限制 + 自动扩缩说明
- function - 无法使用学术导入 --bibtex 导入出版物
- javascript - 返回对象数组中的最大数
- r - R data.table:带有命名列的新数据表并删除其余部分
- r - 条形图中的美学错误(ggplot,R)
- flutter - CircleAvatar 不是圈子
- php - 如何在本地任务链接中添加图标?(德鲁巴)
- vba - 如何从 VBA Acces 中的查询中获取记录?