有沒有辦法允許在ASIO中使用已連接的套接字?如何在Boost.ASIO中分配已連接的本地套接字類型(TCP)
試圖發送一個請求; ip::tcp::socket::assign
在2個不同的地方隨機給出2個不同的段錯誤。其中之一是在回撥之前(op_queue_acess::next
),其他回撥之後(boost::asio::detail::task_io_service_operation::complete
(func_等於0並嘗試執行))。所以我想它不適用於連接的套接字。
編輯:
的情況是,我有一個連接的本地描述符(實際上是在另一個庫下方的插槽),我想將其分配到一個新的空IP :: TCP ::插座等等,我可以在套接字準備好時使用read
(使用帶有空緩衝區的socket::async_read_some
)並以非阻塞方式使用該庫。
示例代碼如下爲:
class C
{
ip::tcp::socket socket_;
const char connection_info_[] = "...";
TPLibrary tp_;
void start()
{
.
.
tp_.connect(connection_info);
socket_.assign(ip::tcp::v4(), tp_.nativeSocket());
}
}
然後使用這個插座上async_read給人的說賽格故障,有時其調用回調,有時之前後。
編輯: 現在我已經刪除了所有內容,只有tcp :: socket和分配給套接字,但仍然提供給segfaults。是否因爲io_service位於動態加載的庫上,並且套接字位於另一個動態加載的庫中,並且引用了主庫上的io_service?
你的問題不清楚。你有一個現有的本地描述符,你想分配給一個已經連接的'boost :: asio :: ip :: tcp :: socket'? –
@SamMiller我編輯了這個問題。 – Etherealone
有一個[示例](http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/example/cpp03/nonblocking/third_party_lib.cpp),顯示了Asio文檔中包含的reactor風格操作。 SO上也有[類似](http://stackoverflow.com/questions/4686127/async-wait-on-file-descriptor-using-boost-asio/4686523#4686523)問題。請在您的問題中包含您的代碼,以便我們提供幫助。 –