2013-05-11 3 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, чтобы правильно упаковать код – billz

ответ

1

В соответствии с документацией Asio следующие функции могут вызывать исключение ip::tcp::acceptor, accept. Тем не менее, почти каждая функция бросания в Asio имеет не-бросающий аналог, который возвращает error_code. Таким образом, либо catch исключений, либо использовать не метательные версии.