首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >套接字(AF_INET、SOCK_RAW、IPPROTO_UDP)会阻止所有数据报到达正确的位置吗?

套接字(AF_INET、SOCK_RAW、IPPROTO_UDP)会阻止所有数据报到达正确的位置吗?
EN

Stack Overflow用户
提问于 2016-08-19 13:41:43
回答 1查看 961关注 0票数 0

所以我用socket(AF_INET,SOCK_RAW,IPPROTO_UDP)创建了一个套接字。然后我让它有一个无限循环的recv()。我知道它可以捕获所有的数据报。但是它会阻止数据报到达正确的位置吗?我做了个小实验。我从一个程序向另一个程序发送非常简单的UDP消息。他们都收到了这条消息。我假设原始套接字不会阻塞任何UDP消息。然后我在the second paragraph of this question's best answer上读到了这件事。它说未绑定的udp套接字会使系统混乱。因此,我不确定这是否与原始套接字相同。或者在linux和windows上是不同的?

另一个快速问题:将套接字(AF_INET、SOCK_RAW、IPPROTO_UDP)与端口绑定不会做任何事情,对吗?我这样做了,套接字仍然会收到发往所有其他端口的消息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-19 17:00:30

不。原始套接字将所有数据包传递给所有已注册的套接字用户,因此一旦数据包进入系统,您就会得到它的副本,但UDP套接字也会接收它。

关于第二个问题...您不能对原始套接字执行bind(2)操作,因此不能将其与端口号相关联。

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

https://stackoverflow.com/questions/39031824

复制
相关文章

相似问题

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