gpt4 book ai didi

c - socket(AF_INET, SOCK_RAW, IPPROTO_UDP) 会阻止所有数据报到达正确的位置吗?

转载 作者:太空宇宙 更新时间:2023-11-04 12:44:51 25 4
gpt4 key购买 nike

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

还有一个简单的问题:绑定(bind) socket(AF_INET, SOCK_RAW, IPPROTO_UDP) 和端口不会做任何事情,对吧?我做到了,套接字仍然接收到各种其他端口的消息。

最佳答案

不是。原始套接字将所有数据包传送给所有已注册的套接字用户,因此您将在数据包进入系统后立即获得该数据包的副本,但 UDP 套接字也会收到它。

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

关于c - socket(AF_INET, SOCK_RAW, IPPROTO_UDP) 会阻止所有数据报到达正确的位置吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39031824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com