📜  ALO - C++ (1)

📅  最后修改于: 2023-12-03 14:59:13.132000             🧑  作者: Mango

ALO - C++介绍

ALO - C++ 是一个基于 C++ 的高性能异步网络库,专为编写高并发服务器程序而设计。

功能特点
  • 支持 TCP、UDP、HTTP 等网络协议。
  • 支持异步非阻塞 TCP 服务端和客户端编程。
  • 支持多线程并发处理。
  • 支持 epoll、kqueue、IOCP 等高性能的事件驱动模型。
  • 支持事件循环机制。
  • 支持 SSL/TLS 安全传输。
  • 支持 HTTP 请求处理。(解析 GET、POST 等请求内容)
  • 提供简单易用的 API。
  • 支持运行在 Windows、Linux、MacOS 等操作系统上。
使用方法
异步 TCP 服务端示例
#include <iostream>
#include "alo.h"

using namespace alo;

class EchoServer : public TcpServer {
public:
    virtual void onMessage(ConnectionPtr conn, Buffer& buffer) override {
        std::string message = buffer.toString();
        conn->send(message.c_str(), message.size());
    }
};

int main() {
    EventLoop loop;
    EchoServer server;
    server.setConnectionCallback([](ConnectionPtr conn) {
        std::cout << "New connection from " << conn->getPeerAddr().toIpPort() << std::endl;
    });
    server.setMessageCallback([](ConnectionPtr conn, Buffer& buffer) {
        conn->send(buffer);
    });
    server.start(&loop, InetAddress(8888));
    loop.loop();
    return 0;
}
异步 TCP 客户端示例
#include <iostream>
#include "alo.h"

using namespace alo;

class EchoClient : public TcpClient {
public:
    virtual void onConnect(ConnectionPtr conn) override {
        std::cout << "Connected to " << conn->getPeerAddr().toIpPort() << std::endl;
        conn->send("Hello, world!");
    }
    virtual void onMessage(ConnectionPtr conn, Buffer& buffer) override {
        std::cout << "Received message: " << buffer.toString() << std::endl;
        conn->close();
    }
    virtual void onClose(ConnectionPtr conn) override {
        std::cout << "Connection closed" << std::endl;
    }
};

int main() {
    EventLoop loop;
    EchoClient client;
    client.start(&loop, InetAddress("127.0.0.1", 8888));
    loop.loop();
    return 0;
}
维护者

ALO - C++ 是由开发者 JohnLi 李祺开发和维护的,欢迎提供代码贡献和使用反馈。