LynxDB Socket

原文地址:Socket 框架 - LynxDB 数据库官网
Gitee地址:gitee.com/bailizhang/lynxdb
GitHub地址:github.com/baili-zhang/lynxdb

LynxDB 基于 Java NIO 封装了自己的 Socket 框架,主要使用方法:

问:为什么不使用 Netty 作为 Socket 框架?

答:因为有些代码,你自己不写,就永远不知道性能损失在哪里!

创建 Socket 服务器

SocketServerConfig config = new SocketServerConfig(7820);
SocketServer server = new SocketServer(config);
// 设置 handler
server.setHandler(new SocketServerHandler() {
    @Override
    public void handleRequest(SegmentSocketRequest request) {
        // 处理客户端请求...
    }
});

启动服务器

Executor.start(server);

发送响应

SelctionKey selectionKey;
int serial;
ByteBuffer[] buffers;
// 构建响应对象
WritableSocketResponse response = new WritableSocketResponse(
    selectionKey,
    serial,
    buffers
);
// 发送响应
server.offerInterruptibly(response);

创建客户端

SocketClient client = new SocketClient();
// 设置 handler
client.setHandler(new SocketClientHandler() {
    @Override
    public void handleConnected(SelectionKey selectionKey) {
        // 处理 connected 事件...
    }

    @Override
    public void handleResponse(SocketResponse response) {
        // 处理服务端的响应...
    }
});

// 连接服务器
client.connect(new ServerNode("127.0.0.1", 7820));

启动客户端

Executor.start(client);

发送请求

SelctionKey selectionKey;
int serial;
ByteBuffer[] buffers;
// 构建 Socket 请求对象
ByteBufferSocketRequest request = new ByteBufferSocketRequest(
    selectionKey,
    serial,
    buffers
);

client.offerInterruptibly(request);
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!