Boost.Asio 的C++ 简单网络聊天应用程序

服务端代码

#include <boost/asio.hpp>
#include <iostream>
#include <thread>

using boost::asio::ip::tcp;

/**
 * 处理客户端连接的函数
 * 接收客户端消息并向客户端发送回复
 * @param socket 与客户端通信的套接字(通过移动语义获取所有权)
 */
void handle_client(tcp::socket socket) {
    try {
        char data[1024];  // 存储客户端消息的缓冲区
        
        // 持续接收客户端消息
        while (true) {
            std::memset(data, 0, sizeof(data));  // 清空缓冲区
            boost::system::error_code error;

            // 从客户端读取消息
            // read_some() 会阻塞直到有数据可读或发生错误
            size_t length = socket.read_some(boost::asio::buffer(data), error);
            
            // 检查连接状态
            if (error == boost::asio::error::eof) break;  // 客户端正常关闭连接
            else if (error) throw boost::system::system_error(error);  // 发生其他
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员乐逍遥

如果你觉得帮助了你,支持一下!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值