2
我使用boost日間例程作爲需要機器間雙向通信的項目的啓動器,現在需要在自己的線程中啓動asio io_service,以便可以跨數據傳遞seperatley。這裏是我的代碼的基礎:http://www.boost.org/doc/libs/1_35_0/doc/html/boost_asio/tutorial/tutdaytime7/src.html在boost線程中運行boost asio io_service
如果我調用該服務的主要有
io_service.run()
但是,如果我嘗試創建一個線程組,並推出有像這樣這一切工作正常:
int main()
{
boost::thread_group tgroup;
try
{
boost::asio::io_service io_service;
tcp_server server1(io_service);
udp_server server2(io_service);
tgroup.create_thread(boost::bind(&boost::asio::io_service::run, &io_service));
std::cout << "Server running on TCP port " << tcpport << std::endl << "Server running on UDP port " << udpport << std::endl;
}
catch (std::exception& e)
{
std::cerr << e.what() << std::endl;
}
tgroup.join_all();
return 0;
}
代碼編譯並運行時,端口號被cout正確引用,但似乎並未打開偵聽端口,因爲客戶端獲取連接時被拒絕,儘管服務器程序似乎在等待連接。
這裏發生了什麼事?