怎样使用Java网络通讯框架Mina自定义消息格式( 二 )
import java.awt.image.BufferedImage;public class ImageListener {\tpublic void onImages(BufferedImage image1, BufferedImage image2) {\t\tSystem.out.println(String.format("onImages@image1.getimage1.getHeight(),\t\t\t\timage1.getWidth()));\t\tSystem.out.println(String.format("onImages@image2.getHeight=%d|image2.getWidth=%d", image2.getHeight(),\t\t\t\timage2.getWidth()));\t}}public class ImageRequest {\tprivate int width;\tprivate int height;\tprivate int numberOfCharacters;\tpublic ImageRequest(int width, int height, int numberOfCharacters) {\t\tthis.width = width;\t\tthis.height = height;\t\tthis.numberOfCharacters = numberOfCharacters;\t}\tpublic int getWidth() {\t\treturn width;\t}\tpublic int getHeight() {\t\treturn height;\t}\tpublic int getNumberOfCharacters() {\t\treturn numberOfCharacters;\t}}import org.apache.mina.core.buffer.IoBuffer;import org.apache.mina.core.session.IoSession;import org.apache.mina.filter.codec.CumulativeProtocolDecoder;import org.apache.mina.filter.codec.ProtocolDecoderOutput;public class ImageRequestDecoder extends CumulativeProtocolDecoder {\tprotected boolean doDecode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception {\t\tif (in.remaining() \u0026gt;= 12) {\t\t\tint width = in.getInt();\t\t\tint height = in.getInt();\t\t\tint numberOfCharachters = in.getInt();\t\t\tImageRequest request = new ImageRequest(width, height, numberOfCharachters);\t\t\t\t\t\tSystem.out.println(String.format("doDecode@width=%d|height=%d|numer_of_characters=%d", width,\t\t\t\t\theight, numberOfCharachters));\t\t\t\t\t\tout.write(request);\t\t\treturn true;\t\t} else {\t\t\treturn false;\t\t}\t}}import org.apache.mina.core.buffer.IoBuffer;import org.apache.mina.core.session.IoSession;import org.apache.mina.filter.codec.ProtocolEncoder;import org.apache.mina.filter.codec.ProtocolEncoderOutput;public class ImageRequestEncoder implements ProtocolEncoder {\tpublic void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception {\t\tImageRequest request = (ImageRequest) message;\t\tIoBuffer buffer = IoBuffer.allocate(12, false);\t\tbuffer.putInt(request.getWidth());\t\tbuffer.putInt(request.getHeight());\t\tbuffer.putInt(request.getNumberOfCharacters());\t\tSystem.out.println(String.format(\t\t\t\t"encode@request_width=%d|request_height=%drequest_|numer_of_characters=%d", request\t\t\t\t\t\t.getWidth(), request.getHeight(), request.getNumberOfCharacters()));\t\tbuffer.flip();\t\tout.write(buffer);\t}\tpublic void dispose(IoSession session) throws Exception {\t\t// nothing to dispose\t}}import java.awt.image.BufferedImage;public class ImageResponse {\tprivate BufferedImage image1;\tprivate BufferedImage image2;\tpublic ImageResponse(BufferedImage image1, BufferedImage image2) {\t\tthis.image1 = image1;\t\tthis.image2 = image2;\t}\tpublic BufferedImage getImage1() {\t\treturn image1;\t}\tpublic BufferedImage getImage2() {\t\treturn image2;\t}}
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 『先进』长江流域最先进洗舱站在宁投运 油可分离回收,水能循环使用
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
- 怎样评价扶他柠檬茶的小说《云养汉》的结尾
- 汽车|迈凯伦Artura不再使用迈凯伦祖传V8引擎了?
- 怎样成为一名合格的Python程序员?
