MINA : line is too long 传递大字符串数据
发布日期:2021-07-01 05:36:19 浏览次数:2 分类:技术文章

本文共 6091 字,大约阅读时间需要 20 分钟。

服务端:

// 设置行大小TextLineCodecFactory lineCodec=new TextLineCodecFactory(Charset.forName("UTF-8"));lineCodec.setDecoderMaxLineLength(1024*10240); //10MlineCodec.setEncoderMaxLineLength(1024*10240); //10Mconn.getFilterChain().addLast("codec",new ProtocolCodecFilter(lineCodec));  //行文本解析

  客服端

// 设置行大小TextLineCodecFactory lineCodec=new TextLineCodecFactory(Charset.forName("UTF-8"));lineCodec.setDecoderMaxLineLength(1024*10240); //10MlineCodec.setEncoderMaxLineLength(1024*10240); //10Mconn.getFilterChain().addLast("codec",new ProtocolCodecFilter(lineCodec));  //行文本解析

 

全文

import com.alibaba.fastjson.JSONObject;import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;import org.apache.mina.core.future.ConnectFuture;import org.apache.mina.core.service.IoHandlerAdapter;import org.apache.mina.core.session.IoSession;import org.apache.mina.filter.codec.ProtocolCodecFilter;import org.apache.mina.filter.codec.textline.TextLineCodecFactory;import org.apache.mina.transport.socket.nio.NioSocketConnector;import java.net.InetSocketAddress;import java.nio.charset.Charset;/** * @Classname MinaUtils * @Description MinaUtils * @Date 2020-02-24 14:10 * @Created by issuser */public class MinaUtils {    public static boolean send(String hostname, int port, JSONObject json) {        NioSocketConnector conn = new NioSocketConnector();        DefaultIoFilterChainBuilder chain = conn.getFilterChain();        chain.addLast("myChain",new ProtocolCodecFilter(new TextLineCodecFactory()));        // 设置行大小        TextLineCodecFactory lineCodec=new TextLineCodecFactory(Charset.forName("UTF-8"));        lineCodec.setDecoderMaxLineLength(1024*10240); //10M        lineCodec.setEncoderMaxLineLength(1024*10240); //10M        conn.getFilterChain().addLast("codec",new ProtocolCodecFilter(lineCodec));  //行文本解析        conn.setHandler(new MinaClientHandle());        conn.setConnectTimeoutCheckInterval(3000);        //连接服务器        ConnectFuture cf = conn.connect(new InetSocketAddress(hostname, port));        cf.awaitUninterruptibly(); //等待连接成功;        IoSession session = cf.getSession();        session.write(json);        //等待服务器关闭连接 如果服务端不被关闭,则这里不会收到服务器端的关闭请求        cf.getSession().getCloseFuture().awaitUninterruptibly();        conn.dispose();        return true;    }}class MinaClientHandle extends IoHandlerAdapter {    @Override    public void sessionOpened(IoSession session) throws Exception {        super.sessionOpened(session);        System.out.println("已连接");    }    @Override    public void sessionClosed(IoSession session) throws Exception {        super.sessionClosed(session);        System.out.println("已关闭");    }    @Override    public void messageReceived(IoSession session, Object message) throws Exception {        super.messageReceived(session, message);        System.out.println("服务器返回消息:"+message);    }}

 

package com.isstech;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import org.apache.mina.filter.codec.textline.TextLineDecoder;import org.junit.Test;import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;import org.apache.mina.core.future.ConnectFuture;import org.apache.mina.core.service.IoHandlerAdapter;import org.apache.mina.core.session.IoSession;import org.apache.mina.filter.codec.ProtocolCodecFilter;import org.apache.mina.filter.codec.textline.TextLineCodecFactory;import org.apache.mina.transport.socket.nio.NioSocketConnector;import java.net.InetSocketAddress;import java.nio.charset.Charset;import java.util.Scanner;import java.util.UUID;/** * @Classname MinaTest * @Description TODO * @Date 2020-02-24 13:28 * @Created by issuser */public class MinaTest {    @Test    public void maintest() throws Exception {        String hostname = "127.0.0.1";        int port = 8124;        NioSocketConnector conn = new NioSocketConnector();        DefaultIoFilterChainBuilder chain = conn.getFilterChain();        chain.addLast("myChain",new ProtocolCodecFilter(new TextLineCodecFactory()));        // 设置行大小        TextLineCodecFactory lineCodec=new TextLineCodecFactory(Charset.forName("UTF-8"));        lineCodec.setDecoderMaxLineLength(1024*10240); //10M        lineCodec.setEncoderMaxLineLength(1024*10240); //10M        conn.getFilterChain().addLast("codec",new ProtocolCodecFilter(lineCodec));        conn.setHandler(new MinaClientHandle());        conn.setConnectTimeoutCheckInterval(3000);        //连接服务器        ConnectFuture cf = conn.connect(new InetSocketAddress(hostname, port));        cf.awaitUninterruptibly();//        acceptor.getSessionConfig().setReadBufferSize(1024*1024);//发送缓冲区1M//        acceptor.getSessionConfig().setReceiveBufferSize(1024*1024);//接收缓冲区1M        IoSession session = cf.getSession();//        Scanner input = new Scanner(System.in);//        while (true){            System.out.println("输入消息");//            String msg = input.nextLine();            String msg = UUID.randomUUID().toString();            JSONObject json = new JSONObject();//            json.put("msg", msg);//            json.put("file_id", "123456");            String data = "{\"param_data\":{\"other\":\"other\",\"alarmTime\":\"1582277663260\"}," +                    "\"id\":\"074601#32d350edd584\",\"imageBase64Bodys\":\"bm9GaWxl\"}";            json = JSON.parseObject(data);            // data:image/jpg;base64,            json.put("imageBase64Bodys", "iVBORw0KGgoAAAANSUhmCC");            session.write(json);//        }        //如果服务端不被关闭,则这里不会收到服务器端的关闭请求        cf.getSession().getCloseFuture().awaitUninterruptibly();        conn.dispose();    }}class MinaClientHandle extends IoHandlerAdapter {    @Override    public void sessionOpened(IoSession session) throws Exception {        super.sessionOpened(session);        System.out.println("连接");    }    @Override    public void sessionClosed(IoSession session) throws Exception {        super.sessionClosed(session);        System.out.println("关闭");    }    @Override    public void messageReceived(IoSession session, Object message) throws Exception {        super.messageReceived(session, message);        System.out.println("服务器:"+message);    }}

 

转载地址:https://openai.blog.csdn.net/article/details/104478104 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:docker 安装es单机
下一篇:centos7 scp命令使用

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月29日 22时26分55秒