基于Java AIO 的数传服务器项目预研demo

项目背景:

数传服务器项目,需对 与外界交互的 报文进行加/解密,提高数传服务器的报文处理能力;

因为数传服务器需随 便携设备 一起工作,所以并不能简单的依靠增加设备来提高的报文处理能力,因此项目改进点只能是提高单个设备的报文处理能力

目前数传服务器的 IO 已通过 NIO 实现,现自研以 AIO 的方式实现 Demo

相关说明:

数传服务器 属于 服务端功能,对接收到的报文进行 加/解密 后,再转发

目前数传服务器的 IO 已通过 NIO 实现,现自研以 AIO 的方式实现 Demo

demo说明:

  • AioServer :封装了 AIO 的 Server 实现,支持不间断的处理 接收到的报文,予以处理后再发送出去;(回调方式实现)
  • AioClient :封装了 AIO 的 Client 实现,支持从控制台接受输入作为报文,发送给客户端

NIO 的原理与基本概念,参考:

  • https://www.cnblogs.com/Theshy/p/7696313.html
  • https://blog.csdn.net/zmx729618/article/details/53171553

Demo实现

主要有两个类:

  • AioServer:封装了 AIO 的 Server 实现,支持不间断的处理 接收到的报文,予以处理后再发送出去;(回调方式实现)
  • AioClient :封装了 AIO 的 Client 实现,支持从控制台接受输入作为报文,发送给客户端

AioServer

封装了 AIO 的 Server 实现,支持不间断的处理 接收到的报文,予以处理后再发送出去;(回调方式实现)

package com.wj.io.aio;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.AsynchronousChannelGroup;
import java.nio.channels.AsynchronousServerSocketChannel;
import java.nio.channels.AsynchronousSocketChannel;
import java.nio.channels.CompletionHandler;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.*;
import java.util.function.Function;

/**
 * AIO 服务端,实现 不间断的 报文 收-处理-发 的过程
 */
public class AioServer implements Runnable {

    /**
     * 收发消息的编码格式
     */
    private final Charset utf8 = Charset.forName("UTF-8");
    /**
     * 服务端的处理逻辑(Function Interface)
     */
    private Function<String, String> service;
    /**
     * 服务端地址
     */
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值