如何将 UDP 套接字绑定到一定范围的端口
我想为一个应用程序编写一个内核线程来读取所有 UDP 数据包。我在绑定方面遇到问题,因为这些数据包可以到达端口范围(例如 5001 到 5005)。
如何做到这一点。 任何指针/链接都会有帮助。
I want to write a kernel thread for an application that will read all UDP packets. I am facing problem in binding as these packet can arrive in range of ports (say 5001 to 5005).
How to do this.
Any pointer/link will be helpful.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您不能将一个套接字绑定到多个端口,请按照注释中建议的 0verbose 操作并每个端口使用一个套接字
You can't bind a socket to more than one port, do as 0verbose suggested in a comment and use one socket per port
除了打开多个套接字之外,您还需要使用 select()/poll() 一次监听所有套接字。
如果您在 Linux 下使用 C/C++ 进行编程,这里有一个 C 伪代码:
希望此代码对您有所帮助
Besides opening multiple sockets, you need to use select()/poll() to listen to all sockets at once.
If you are programming in C/C++ under Linux, here is a pseudo-code in C:
Hope this code will help you