_outSocket.send()呼び出しを使わずに以下のコードでstart_receive()メソッドを呼び出すと、メソッドは問題なくソケットからデータを受信しますが、データが別のソケットに出力されると、ブースト例外がスローされます。私は何が原因で問題が起こっているのか分からないので、どんな助けも素晴らしいだろう。ソケットにデータを送信すると例外が発生する
#include "dataproxy.h"
#include <boost/bind.hpp>
#include <cstdlib>
using namespace boost::asio;
DataProxy::DataProxy(boost::asio::io_service& ioserv)
: _inSocket(ioserv, ip::udp::endpoint(ip::udp::v4(), 5004))
,_outSocket(ioserv, ip::udp::endpoint(ip::udp::v4(), 5005))
{
}
DataProxy::~DataProxy()
{
}
void DataProxy::start(){
QThread::start();
}
void DataProxy::run()
{
while(true)
{
start_receive();
}
}
void DataProxy::start_receive()
{
/*_inSocket.async_receive_from(
boost::asio::buffer(_inBuffer), _videoEndpoint,
boost::bind(&DataProxy::handleIncomingData, this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
*/
size_t reply_length = _inSocket.receive_from(
boost::asio::buffer(_inBuffer), _dataSourceEndpoint);
std::cout << "Received " << reply_length << " bytes" << std::endl;
//This is the line that causes the exception
size_t send_length = _outSocket.send(boost::asio::buffer(_inBuffer));
}
例外のエラーメッセージは何ですか? – nabulke
const boost :: system :: error_code&exをキャッチしようとしましたが、 "RVT.exeの0x76e4b727で未処理の例外が発生しました。メモリの0x04f0f634 ..のブースト::システム::システムエラー.." – Slruh
タイプは '_inBuffer'ですか? 'send()'で 'buffer'をインスタンス化するときに' reply_length'を含めてみましたか? –