前言
之前已经讲过了netty
实现tcp
客户端,大家有兴趣的话可以参考文章
Netty实现TCP客户端
今天就让我们来看看netty
实现tcp
服务端吧。这里我封装了两个类TnServerHandler
与TnServer
,下面就来讲讲它们的使用吧。
今天涉及以下内容:
-
netty
jar 包导入 -
TnServerHandler
与TnServer
简介 -
TnServer
主要方法简介 -
TnServer
在主函数中的使用 - 需要注意的问题
- 效果图和项目结构图
-
TnServerHandler
与TnServer
源码
先来波效果图
一. netty jar 包导入
在利用netty
实现tcp
通讯前,我们需要导入netty
jar包,我用的版本是netty-all-5.0.0.Alpha2.jar
。首先我们要在你项目的 项目/app/
下建lib
文件夹,建成后路径为:项目/app/lib/
,然后将netty-all-5.0.0.Alpha2.jar
复制 到 项目/app/lib/
文件夹下。选中netty-all-5.0.0.Alpha2.jar
右键,选择 add As Library...
,然后打开你app_module
对应的build.gradle
,看到以下代码:
implementation files('libs/netty-all-5.0.0.Alpha2.jar')
则表示你jar包
导入成功。
netty
jar 包你可以在Netty
官网下,当然这里我也提供下netty-all-5.0.0.Alpha2.jar
下载地址:
netty-all-5.0.0.Alpha2.jar下载
二. TnServerHandler
与TnServer
简介
TnServerHandler
是作为TnServer
的一个辅助类,大家在使用时无需关注,这里我们主要讲讲TnServer
。TnServer
是一个利用netty
封装实现tcp服务端
的工具类。利用它可以方便快捷的实现tcp服务端
三. TnServer
主要方法简介
下面介绍下TnServer
的一些主要方法:
/**
* 初始化对象
*
* @param port 端口:0-65535
* @param charsetName 字符编码集:如 TcpConfig.UTF_8 或 TcpConfig.GBK
*/
public TnServer(int port,String charsetName)
/**
* 服务端启动方法
*
* @param listener 接收和回复客户端消息的监听
*/
public void start(TnServerHandler.OnChannelListener listener)
四. TnServer 在主函数中的使用
下面贴出TnServer
在主函数中使用的代码:
public class TestJava {
public static int PORT=1111;
public static void main(String[] args) {
LogUtil.setDebug(true);
TnServer tnServer=new TnServer(PORT,"GBK");
tnServer.start(new TnServerHandler.OnChannelListener() {
@Override
public String receiveData(ChannelHandlerContext ctx, String result) {
int type=Integer.valueOf(result.substring(0,1));
String message=result.substring(1,result.length());
System.out.println("===========我是接收结果=====result="+message);
//返回值为返回给客户端的结果
String response = null;
switch (type) {
case 1:
response = "服务端已经收到第一条数据";
break;
case 2:
response = "服务端已经收到第二条数据";
break;
default:
break;
}
System.out.println("===========我是回复信息=====response="+response);
return response;
}
});
}
}
这里需要注意的是,为了处理不同的通讯,我们可以在receiveData(ChannelHandlerContext ctx, String result)
的result
上做标记用以区分不同的数据通讯结果,然后根据这个标记分类,给客户端返回不同的数据,即以上代码中 switch-case
中的处理。
五. 需要注意的问题
若出现服务端
接收和发送给客户端
的数据有乱码的情况,请保证客户端
与服务端
的字符编码集
一致
六.效果图和项目结构图
七. TnServerHandler 与 TnServer 源码
下面贴出TnServer
源码: