c++ - 如果未读取输出端点抛出无效参数

标签 c++ boost boost-asio

我编译了this example并尝试使用 PHP 连接到服务器。连接时,它意味着将文本写回客户端。如果我使用 PHP 读取输出,服务器运行良好 - 如果我不读取输出,服务器偶尔会打印 remote_endpoint: Invalid argument 然后停止。有解决办法吗(比如捕获错误)?我想用这个例子来编写我自己的返回一些数据的服务器。如果有人连接到它但没有读取输出,我不希望它崩溃。我使用 Mac OSX 10.8.3,启用了 GCC 4.8 和 C++11。

最佳答案

如果你想让这个服务器捕获异常并继续下去,只需将main改成如下:

int main()
{
  boost::asio::io_service io_service;
  tcp_server server(io_service);
  while(true)
    try
    {
      io_service.run();
      break; 
    }
    catch (std::exception& e)
    {
      std::cerr << e.what() << std::endl;
    }

  return 0;
}

关于c++ - 如果未读取输出端点抛出无效参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16779725/

相关文章:

c++ - 通过引用传递结构参数 C++

c# - Win 32 Dll 在 Activex 中工作但在 C++/c# 测试应用程序中崩溃

c++ - boost async_write 问题

c++ - 初始化具有参数的类成员对象的正确方法

c++ - 类定义中的双字符数组

C++:如何将%USERPROFILE% 路径转换为文件路径(应适用于 Windows XP 及更高版本)

c++ - 是否可以使用模板来识别两种不同的类型?

python - 为 Python 3.5 构建 Fortran 扩展或为 2.7 构建 C 扩展

c++ - 使用 typedef 结构 boost shared_ptr

c++ - Boost::asio 并发(?)