socket 995 错误 boost

简介:

这个错误的中文解释是:由于线程退出或应用程序请求,已中止 I/O 操作。

最近几天学习boost asio 在抄官方的一个实例代码时遇到 了,这个错误搞了我三天才解决,就是在一行代码中少了一个 s 所致。

正确的代码是这样 的

        boost::asio::io_service io;
        server s(io, 13);
        io.run();

而我因为手误将代码写成这样

        boost::asio::io_service io;
        server (io, 13);
        io.run();

这样导致 server对象过早析构造成了这个问题。真是郁闷。

相关文章
|
5月前
19.4 Boost Asio 远程命令执行
命令执行机制的实现与原生套接字通信一致,仅仅只是在调用时采用了Boost通用接口,在服务端中我们通过封装实现一个`run_command`函数,该函数用于发送一个字符串命令,并循环等待接收客户端返回的字符串,当接收到结束标志`goodbye lyshark`时则说明数据传输完成则退出,客户端使用`exec_command`函数,该函数通过`_popen`函数执行一条命令,并循环`fgets`读取字符串发送给服务端,最终传输一个结束标志完成通信。
27 0
19.4 Boost Asio 远程命令执行
|
5月前
|
网络协议
19.13 Boost Asio 发送TCP流数据
Boost框架中默认就提供了针对TCP流传输的支持,该功能可以用来进行基于文本协议的通信,也可以用来实现自定义的协议。一般`tcp::iostream`会阻塞当前线程,直到IO操作完成。首先来看服务端代码,如下所示在代码中首先通过`GetFileSize`读取文件行数,当有了行数我们就可以使用循环的方式依次调用`acceptor.accept(*tcp_stream.rdbuf())`接收客户端的相应请求,并使用`<<`符号向建立了链接的文件内追加字符串数据。
38 0
19.13 Boost Asio 发送TCP流数据
|
5月前
|
容器
19.12 Boost Asio 获取远程进程
远程进程遍历功能实现原理与远程目录传输完全一致,唯一的区别在于远程进程枚举中使用`EnumProcess`函数枚举当前系统下所有活动进程,枚举结束后函数返回一个`PROCESSENTRY32`类型的容器,其中的每一个成员都是一个进程信息,只需要对该容器进行动态遍历即可得到所有的远程主机列表。
27 0
19.12 Boost Asio 获取远程进程
|
5月前
19.5 Boost Asio 传输结构体
同步模式下的结构体传输与原生套接字实现方式完全一致,读者需要注意的是在接收参数是应该使用`socket.read_some`函数读取,发送参数则使用`socket.write_some`函数实现,对于套接字的解析同样使用强制指针转换的方法。
29 0
19.5 Boost Asio 传输结构体
|
5月前
|
存储 开发者 容器
19.11 Boost Asio 获取远程目录
远程目录列表的获取也是一种很常用的功能,通常在远程控制软件中都存在此类功能,实现此功能可以通过`filesystem.hpp`库中的`directory_iterator`迭代器来做,该迭代器用于遍历目录中的文件和子目录,它允许开发者轻松遍历目录层次结构并对遇到的文件和目录执行各种操作。
36 1
19.11 Boost Asio 获取远程目录
|
网络协议 数据格式 JSON
使用boost::asio库实现多个子进程监听同一个端口
class session_http { public: session_http(boost::asio::io_context &io) : socket_(io) {}; void run(boost::asi...
2320 0
|
网络协议 编译器 消息中间件
boost boost::asio::read socket.read_some 区别
boost boost::asio::read 尝试读一定数量的字节,直到读到为止,或者出错  socket.read_some 读一下socket,读到多少算多少  带async的类似
1837 0

热门文章

最新文章