我想通過boost :: asio原始套接字發送TCP消息。 我的數據包基於來源:https://github.com/pfpacket/SYN-flood如何通過boost :: asio從send_to獲取特定的錯誤細節?
我檢查了IP和TCP數據包發生器的二進制輸出,這些消息看起來有效。此外,TCP的原始套接字功能看起來很好。
45 10 00 28 00 00 40 00
40 06 A5 18 08 08 08 08
0B 0B 07 01 11 AD 15 B3
00 00 17 AA 00 00 00 00
50 02 10 00 3E BD 00 00
無論如何,如果我把這個由send_to功能的插座我收到錯誤:
send_to: Ein ungültiges Argument wurde angegeben
英語翻譯:「使用非有效的論據」
我沒有更多的想法,哪裏出現問題。我需要更多有關相關問題的細節。
如何從send_to()接收更多特定的錯誤消息?接下來我可以做什麼?
int main() {
this->port = "5555";
this->target = "11.11.7.1";
try {
boost::asio::io_service io_service;
raw_tcp::socket socket(io_service, raw_tcp::v4());
socket.set_option(boost::asio::ip::ip_hdrincl(true));
raw_tcp::resolver resolver(io_service);
raw_tcp::resolver::query query(this->target , boost::lexical_cast<std::string>( this->port));
raw_tcp::endpoint destination = *resolver.resolve(query);
boost::asio::streambuf request_buffer;
std::ostream os(&request_buffer);
//creates the ipheader and tcp packet and forward it to buffer os
set_syn_segment(os);
socket.send_to(request_buffer.data(), destination);
} catch (std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
}