本文主要是刚学netty,搭建一个简单的服务器和客户端的入门demo。参考书籍《Netty in action》
1:开发工具为Idea,使用maven多模块依赖配置。以nettyParent为父parent project,然后在该工程下创建client和server两个module。
项目目录结构和parent中的maven配置如下:
这个项目中有两个模块,Server与Client,它们的依赖库相同,互相之间没有依赖关系
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>netty-parent</artifactId>
<groupId>netty</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>client</artifactId>
<packaging>jar</packaging>
<name>client</name>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<id>run-client</id>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>client.EchoClient</mainClass>
<arguments>
<argument>${echo-server.hostname}</argument>
<argument>${echo-server.port}</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
</project>
2.1:EchoClientHandler:客户端逻辑处理,其实就是处理返回到客户端的数据。
package client;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.util.CharsetUtil;
/**
*客户端逻辑
*/
public class EchoClientHandler extends SimpleChannelInboundHandler<ByteBuf> {
@Overr