# JackNetty **Repository Path**: visonjack/JackNetty ## Basic Information - **Project Name**: JackNetty - **Description**: jack netty 5,适用与android和服务器 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 16 - **Forks**: 6 - **Created**: 2015-10-12 - **Last Updated**: 2025-04-01 ## Categories & Tags **Categories**: web-dev-toolkits **Tags**: None ## README JackNetty =============================== Android客户端使用 ----------- ### [1.需要引入包](http://netty.io "下载地址") JackNetty.jar netty-buffer-5.0.0.Alpha2.jar netty-codec-5.0.0.Alpha2.jar netty-common-5.0.0.Alpha2.jar netty-handler-5.0.0.Alpha2.jar netty-resolver-5.0.0.Alpha2.jar netty-transport-5.0.0.Alpha2.jar ### 2.gradle 加上 packagingOptions{ exclude 'META-INF/io.netty.versions.properties' exclude 'META-INF/INDEX.LIST' } dependencies { //通讯依赖 compile files('libs/JackNetty.jar') compile files('libs/netty-buffer-5.0.0.Alpha2.jar') compile files('libs/netty-codec-5.0.0.Alpha2.jar') compile files('libs/netty-common-5.0.0.Alpha2.jar') compile files('libs/netty-handler-5.0.0.Alpha2.jar') compile files('libs/netty-resolver-5.0.0.Alpha2.jar') compile files('libs/netty-transport-5.0.0.Alpha2.jar') } ### 3.实现日志接口 实现JackNetty.jar中ILogger,例如: public class DefaultLogger implements ILogger { @Override public void error(Class tag, String error) { System.out.println("tag:"+tag.getName()+"|error:"+error); } @Override public void warn(Class tag, String warn) { System.out.println("tag:"+tag.getName()+"|warn:"+warn); } @Override public void debug(Class tag, String debug) { System.out.println("tag:"+tag.getName()+"|debug:"+debug); } @Override public void info(Class tag, String info) { System.out.println("tag:"+tag.getName()+"|info:"+info); } } 日志记录可根据需求实现对应接口 ### 4.在application中调用 LoggerManager.getInstance().setiLogger(new DefaultLogger()); 这样就设置了底层日志通讯日志按照需求去显示了 ### 5.自定义通讯客户端 建议在service中实现TLVClientListener,新建 XXXServer 继承 TLVClient public class UserService extends Service implements TLVClientListener { @Nullable @Override public IBinder onBind(Intent intent) { return null; } @Override public int onStartCommand(Intent intent, int flags, int startId) { //return super.onStartCommand(intent, flags, startId); return START_STICKY; } @Override public void onCreate() { super.onCreate(); LoggerManager.getInstance().getiLogger().info(UserService.class,"UserService 开始启动"); UserServer.getInstance().setContext(this); UserServer.getInstance().setClientName("android服务"); UserServer.getInstance().setIp("211.157.134.22"); UserServer.getInstance().setPort(53654); UserServer.getInstance().setRestartFlag(true); UserServer.getInstance().setTlvClientListener(this); new Thread(new Runnable() { @Override public void run() { UserServer.getInstance().start(); } }).start(); LoggerManager.getInstance().getiLogger().info(UserService.class, "UserService 启动完成"); } @Override public void onDestroy() { super.onDestroy(); UserServer.getInstance().stop(); //如果有下面这一句,底层会自动重启启动线程重连,如果没有,服务就自动关闭 UserServer.getInstance().setManualCloseFlag(false); } @Override public void onConnect(String serverId) { UserServer.getInstance().doOnConnect(); } @Override public void onDisconnect(String serverId) { UserServer.getInstance().doOnDisconnect(); } @Override public void onMessage(String serverId,String msg) { try{ UserServer.getInstance().preDoMessage(msg); }catch (Exception e){ Log.e(getClass().getName(),"处理消息错误:" + e.getMessage()); } } } ================================================================ public class UserServer extends TLVClient { private static UserServer userServer; private Context context; private UserServer(){ } public Context getContext() { return context; } public void setContext(Context context) { this.context = context; } public static UserServer getInstance(){ if(userServer == null){ userServer = new UserServer(); } return userServer; } public void doOnConnect(){ } public void doOnDisconnect(){ } public void preDoMessage(String msgStr){ } }