2013-05-11 112 views
-3
#include <iostream> 
#include <boost/asio.hpp> 

int main(int argc, char* argv[]) 
{ 
     using namespace boost::asio; 
     io_service iosev; 
     ip::tcp::acceptor acceptor(iosev, 
     ip::tcp::endpoint(ip::tcp::v4(), 1000)); 
     for(;;) 
     { 
       ip::tcp::socket socket(iosev); 
       acceptor.accept(socket); 
       std::cout << socket.remote_endpoint().address() << std::endl; 
       boost::system::error_code ec; 
       socket.write_some(buffer("hello world!"), ec); 
       if(ec) 
       { 
         std::cout << 
           boost::system::system_error(ec).what() << std::endl; 
         break; 
       } 

     } 
     return 0; 
} 

使用命令編譯:升壓運行時錯誤

g++ main.cpp -lboost_system 

它遵守沒有任何錯誤。 但是,當我嘗試運行它,它給了我這個。

libc++abi.dylib: terminate called throwing an exception 
Abort trap: 6 

在Mac上運行10.8.試圖找出原因。

+4

異常可能會在某處引發,請嘗試使用'try catch'塊來正確包裝代碼 – billz 2013-05-11 10:33:49

回答

1

根據Asio文檔,您使用的以下函數可能會拋出異常ip::tcp::acceptor,accept。然而,幾乎Asio中的每個投擲函數都有一個非拋出函數,它返回一個error_code。所以,要麼是catch例外,要麼使用非投擲版本。