前言:
书接上篇:http://blog.csdn.net/supingemail/article/details/45247707
不多废话,具体的介绍以及文档,网络上有很多,我就不多说了。。。。。。
一:实体Bean 对象
/**
*
* 传递的对象.
*
* @author rocky
*
*/
public class Person extends BaseObjBean {
private static final long serialVersionUID = 1L;
private String name;
private String sex;
private int age;
public Person() {
super();
}
public Person(String name, String sex, int age) {
super();
this.name = name;
this.sex = sex;
this.age = age;
}
public String toString() {
return "name:" + name + " sex:" + sex + " age:" + age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
二:客户调用端
/**
* netty 客户端
*
* @author rocky
*
*/
public class NettyClient1 extends NettyBaseClient {
public NettyClient1(BaseObjBean bean) {
super(bean);
}
public static void main(String[] args) throws Exception {
BaseObjBean bean = new Person("张三丰","Boy",39);
NettyClient1 client = new NettyClient1(bean);
client.connect(Comms.IP, Comms.PORT);
}
}
三:服务端
/**
*
* netty 服务端.
*
* @author rocky
*
*/
public class NettyServer1 extends NettyBaseServer {
public NettyServer1(BaseObjBean bean) {
super(bean);
}
public static void main(String[] args) throws Exception {
BaseObjBean bean = new BaseObjBean();
NettyServer1 server = new NettyServer1(bean);
server.start(Comms.PORT);
}
}
运行以的客户端和服务端,就能够看见通信过后的信息,能够看见结果是怎样的了。
但是,这里面的业务都是我封装好的内部的实现,不能满足实际的业务需求,那么
如何才能够实现自己想要实现的业务呐 ? 答案是:写自己的 BusinessHandler ,
它继承自底层的 BusinessHandler .
四:自己的 MyHandler 的实现.
/**
* 自己的 handler , 继承自 BusinessHandler
*
* @author rocky
*
*/
public class MyServerHandler extends BusinessHandler {
private BaseObjBean bean;
public MyServerHandler(BaseObjBean bean) {
super(bean);
this.bean =bean;
}
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
Person bean = (Person) msg;
if (bean.getAge()>30) {
System.out.println("步入中年了你...");
}
if (bean.getAge()==30) {
System.out.println("我靠,你都30 了呀...");
}
if (bean.getAge()<30) {
System.out.println("小伙,不粗哦,还有得玩呀...");
}
if (bean.getSex().equalsIgnoreCase("boy")) {
System.out.println("you are a handsome man ...");
}
if (bean.getSex().equalsIgnoreCase("girl")) {
System.out.println("you are a prefect woman ...");
}
System.out.println("BusinessHandler read msg from client :" + bean);
ctx.channel().write(bean.toString());
ctx.channel().writeAndFlush(bean.toString());
ctx.writeAndFlush(bean.toString());
}
}
五:新的 Server
/**
*
* netty 服务端
*
* @author rocky
*
*/
public class NettyServer2 extends NettyBaseServer {
public NettyServer2(BaseObjBean bean) {
super(bean);
}
public static void main(String[] args) throws Exception {
BaseObjBean bean = new Person();
NettyServer2 server = new NettyServer2(bean);
server.start(Comms.PORT, new MyServerHandler(bean));
}
}
由以上的这些调用,就可以很方便的看到结果,这个中,最主要的还是:MyServerHandler ,
这个是根据自己的业务逻辑,进行相应的业务的开发工作.