boost async_receive_from ip 过滤器
我正在使用 boost::asio
捕获 udp 端口上的数据包。我只是新手,想加强一下。 如何使 async_receive_from
复制数据以仅缓冲具有指定源 IP 的数据包?
I'm using boost::asio
to capture packets on udp port. I'm just new to boost.
How can I make async_receive_from
copy data to buffer only packets with specified source ip?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据捕获数据包的含义,类似这样的一些代码可以工作。这是从 Boost Asio Async UDP 示例修改而来的。如果将端口设置为 0,
socket_
将连接到指定端口
的本地接口,我相信它会侦听所有端口。一旦您使用
async_receive_from
接收到数据包,它也会从解码的数据报中返回sender_endpoint_
(即有问题的数据包来自哪里。)在您的handle_receive_from< /code> 函数只需添加一个条件语句来检查所需的
sender_endpoint_
并“将数据复制到缓冲区”。差点忘了——主要功能!
希望这有帮助!
Depending on what you mean by capture packets, some code like this would work. This is modified from Boost Asio Async UDP example.
socket_
is connected to a local interface at a specifiedport
if you set port to 0 I believe it listens on all the ports.Once you receive a packet using
async_receive_from
, it will also returnsender_endpoint_
from the decoded datagram(i.e. where did the packet in question come from.) In yourhandle_receive_from
function just add a conditional statement to check for desiredsender_endpoint_
and "copy the data to buffer".Almost forgot - main function!
Hope this helps!