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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月29日 22时26分55秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
2 QCreator调试并查看源码
2019-05-02
4 Qt 之 pro 配置多个子工程/子模块
2019-05-02
12 Qt 之 QToolBox、QLCDNumber
2019-05-02
32 Qt 之绘图之绘制一个漂亮的西瓜
2019-05-02
Unix环境变量--进程管理
2019-05-02
Unix环境变量--线程基础
2019-05-02
tinyhttpd源码学习1
2019-05-02
Plus One
2019-05-02
Reverse Linked List II
2019-05-02
36岁退休!阿里 P8 六年实现“财务自由”,裸辞环游世界!
2019-05-02
高赞回答:为什么高级程序员不必担心自己的技术过时?
2019-05-02
SpringBoot集成WebSocket,实现后台向前端推送信息
2019-05-02
老板要我开发一个简单的工作流引擎 !
2019-05-02
MySQL学习笔记——慢查询
2019-05-02
PL/SQL学习笔记之触发器
2019-05-02
Python字符编码和转码
2019-05-02
commons-dbutils【不推荐】
2019-05-02
SOCAT端口转发
2019-05-02
docker快速搭建HTTP代理
2019-05-02
ActiveReports 报表应用教程 (14)---数据可视化
2019-05-03