首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >winsock套接字函数中的协议参数是做什么用的?

winsock套接字函数中的协议参数是做什么用的?
EN

Stack Overflow用户
提问于 2010-07-02 19:10:21
回答 1查看 1.7K关注 0票数 1

winsock函数套接字将协议作为第三个参数,对于套接字类型SOCK_STREAM通常为IPROTO_TCP,对于套接字类型SOCK_DGRAM通常为IPROTO_UDP。当我传递0值作为协议参数时,TCP和UDP按预期工作。

代码语言:javascript
复制
    SOCKET s = socket(AF_INET, SOCK_DGRAM, 0)

    // s is a valid socket

IPROTO_IP协议参数值意味着什么?如果它只打算与SOCK_RAW一起使用,为什么会有这种冗余?

代码语言:javascript
复制
socket(AF_INET, SOCK_STREAM, IPROTO_TCP);
socket(AF_INET, SOCK_DGRAM, IPROTO_UDP);

协议参数到底指定了什么?当我只能使用另一个值时,它看起来并不重要。

我想将UDP数据包(包括广播)从具有多个网卡的PC发送到特定的以太网段。虽然IP路由通常选择网卡(和源地址),但我希望指定适配器,并考虑使用原始套接字或任何其他方法来实现此目标。在这种情况下,这个IPPROTO_IP可能会有所帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-02 20:12:30

我认为socket的文档(可以在这里找到:http://msdn.microsoft.com/en-us/library/ms740506(VS.85).aspx非常清楚这个值是用来做什么的,如果你不关心的话,为什么传递0是很好的。

如果您想要为不寻常的连接类型设置套接字,或者如果您想要创建PGM可靠多播套接字等,则可能需要传递一些不同的东西。

您的第二个问题与原始套接字或协议参数无关。您需要做的只是将套接字绑定到您想要使用的本地接口的地址;因此,您可以告诉它要使用哪个接口,而不是绑定到INADDR_ANY并让堆栈为您决定。

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

https://stackoverflow.com/questions/3165172

复制
相关文章

相似问题

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