boost::asio ライブラリを使用して、Raw TCP パケットをネットワークに送信しようとしています。私のプログラムは Mac OS X 10.8では問題なく動作しますが、Windows 7 でプログラムを実行すると (コンソールで) 例外が発生します:Error: send_to: An invallid argument was supplied.
ソケットを開くコードとsend_to()
メソッドは次のとおりです。
try {
socket_.open();
socket_.send_to(request_buffer.data(), ep);
} catch (std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
エンドポイントを定義する場合:
ip::address_v4::bytes_type b = {{XXX, XXX, XXX, XXX}};
ip::raw::endpoint ep(boost::asio::ip::address_v4(b), (portnumber);
プログラムが Windows で実行できるようにするには、どうすれば例外を解決できますか? Visual Studio 2010 の出力ウィンドウでは、例外は次のとおりです。
First-chance exception at 0x000007fefcce9e5d (KernelBase.dll) in (programname).exe: Microsoft C++ exception: boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> > at memory location 0x0,...