[英]boost sockets in 2 threads
我正在使用Boost套接字和Boost線程。 (同步套接字)。 如果我正確理解,該方案將無法正常工作。
using boost::asio::ip::tcp;
boost::asio::ip::tcp::socket *MySocket;
bool Key = true;
void Function1()
{
try
{
boost::asio::io_service io_service;
tcp::resolver resolver(io_service);
boost::system::error_code error;
boost::asio::ip::address address = boost::asio::ip::address::from_string(IP, error);
tcp::endpoint ep(address, 1235);
MySocket = new tcp::socket(io_service);
MySocket->connect(ep);
Key = false;
}
catch(std::exception e)
{
std::cout<<e.what;
}
}
void Function2()
{
boost::array <char, 8> buf;
size_t len = MySocket->read_some(boost::asio::buffer(buf), error);
//Always len == 0 and buf.data() is MMMMMMM
}
void main()
{
boost::thread Thread(&Function1);
while(Key);
Function2();
MySocket->close();
}
您使用本地 io_service
創建套接字,該套接字在function1
返回后被銷毀。 使其全球化。 (當然,不要以這種方式設計實際的應用程序!堅持使用Asio文檔中描述的方法。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.