首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >socket函数中的流参数和协议参数有什么区别?

socket函数中的流参数和协议参数有什么区别?
EN

Stack Overflow用户
提问于 2013-11-14 14:43:37
回答 1查看 135关注 0票数 1
代码语言:javascript
复制
int socket(int domain, int type, int protocol);

据我所知,

代码语言:javascript
复制
int domain;

此参数用于传递地址族或协议族。我相信地址族和协议族之间没有太大的区别。我们使用它来指定地址类型(IPV4或IPv6)。

代码语言:javascript
复制
int type;

该参数用于网络层的UDP、TCP等连接类型。

代码语言:javascript
复制
int protocol;

该参数用于指定TCP、UDP等协议。

我的问题是

第二个参数和第三个参数之间的区别是什么?如果我们使用TCP协议,我们将使用SOCK_STREAM,如果我们使用UDP协议,我们将使用第二个参数中的SOCK_DGRAM。那么为什么在这种情况下需要两个参数呢?为什么我们不使用一个参数而不是两个参数呢?

EN

回答 1

Stack Overflow用户

发布于 2013-11-14 15:06:58

根据手册页,协议是套接字的子类型,对于大多数类型,没有子类型,但某些类型可能会附加子类型。

例如,如果您有raw套接字类型,则可以指定协议编号。

int fd = socket (PF_INET, SOCK_RAW, IPPROTO_TCP);

-MS

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19971285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档