channelRead接收数据并转发
/** * 接收消息事件 */ @Override public void channelRead(ChannelHandlerContext ctx, Object source) { try { byte[] dataBytes = (byte[]) source; JtcpContext sproutContext = new JtcpContext(ctx, dataBytes); RouteMethod.getInstance().invoke(RouteEnum.OnRecevie, new Object[] { sproutContext }); } catch (Exception ex) { } }
Jtcp-example示例代码
public static void main(String[] args) throws Exception { JtcpBootstrap bootstrap = new JtcpBootstrap(); bootstrap.config().setHost("127.0.0.1"); bootstrap.config().setPort(8030); bootstrap.start(); }
@JtcpComponet public class DemoHandler{ @JtcpRoute(RouteEnum.OnRecevie) public void res(JtcpContext jtcpContext) { jtcpContext.context.writeAndFlush(jtcpContext.getRecvBytes()); //System.err.println(BytesUtils.toHexString(context.getRecvBytes())); } @JtcpRoute(RouteEnum.OnConnect) public void onConnect(JtcpContext context ) { System.err.println("连接成功"); } }
好的以上就是框架代码的基本构造,涉及到了Netty的应用、粘包半包处理,实例缓存与方法路由等内容,整体并不复杂,这里只是提供了一种服务端编码的思路,供初学者参考 。
github地址:https://github.com/dafanjoy/jtcp【基于Netty的TCP服务框架】
经验总结扩展阅读
- 常用的论证方法有哪些
- 什么花花语是错过的爱
- 用电器是将什么能转化成什么能
- Docker | 镜像浅析,以及制作自己的镜像
- 车公庙丰盛町有什么好吃的
- 贫血食补补什么
- 禁止焦虑的签名短句 引人深思的好听签名
- 青菜肉丝面的做法
- 心累的低调又含蓄的签名 星星说它累了让我别许愿了
- 美国NBA的球星乔丹的全名