是否可以在以下情況下提取目標IP地址和源IP地址?我能夠從in_buffer
中提取以太網源和目標地址。任何建議,如果有可能做到這一點?從C++緩衝區中提取IP地址(Linux套接字)
sockaddr_ll sockaddr = sockaddr_ll();
sockaddr.sll_family = PF_PACKET;
sockaddr.sll_protocol = htons(ETH_P_ALL);
// is the interface index of the interface
sockaddr.sll_ifindex = if_nametoindex(argv[1]);
sockaddr.sll_hatype = 1;
boost::asio::io_service io_service;
raw_protocol_t::socket socket(io_service, raw_protocol_t(PF_PACKET, SOCK_RAW));
socket.bind(raw_endpoint_t(&sockaddr, sizeof(sockaddr)));
boost::asio::generic::raw_protocol::socket::receive_buffer_size option;
socket.get_option(option);
std::string in_buffer(option.value(), '\0');
raw_endpoint_t rep = raw_endpoint_t();
while (true)
{
size_t len = socket.receive_from(boost::asio::buffer(&in_buffer[0], in_buffer.size()), rep);
}
對不起,如果這是從你的代碼顯而易見,但是二進制或可讀形式的IP地址? – Downvoter
以及我不知道。我試圖提取它們 – Mazzy
如果你不知道,那麼提取它們是不可能的。你至少要知道地址的格式。你能打印出來沒有任何進一步的轉換?如果是的話,它們是字符串,即可讀。 – Downvoter