Java Netty4 基于对象的通信 二

来源:互联网 发布:java增删改查代码思路 编辑:程序博客网 时间:2024/05/21 10:20


前言:


书接上篇:http://blog.csdn.net/supingemail/article/details/45247707


不多废话,具体的介绍以及文档,网络上有很多,我就不多说了。。。。。。


通信的是对象,那么至少得有一个对象,然后再调用已经写好的进行调用输出。



一:实体Bean 对象


继承之BaseObjBean对象.

/**
 * 
 * 传递的对象.
 * 
 * @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  ,

这个是根据自己的业务逻辑,进行相应的业务的开发工作.





0 0
原创粉丝点击