预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共22页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

一直没时间继续写,这两天总算找了点时间把当时的一些想法简单实现了一下,比较初略,主要是记下自己的想法,下次有机会了再慢慢细化吧。 对于Socket编程来说,通常我们遇到的最大的麻烦就是要定义自己的协议,用来在server端和client端处理请求和响应,当socket处理的请求对象越来越多以后,如果规则定义不清楚就会导致代码急剧膨胀,并且维护性变差,所以这里我想了一个简单的方式来处理这种情况。 下面大概说一下我的想法 1.首先会有几个和业务相关的类,User,MyUserService和MyUserServiceImpl。User就是我们通常的实体类;MyUserService是我们针对User实体类提供的业务逻辑接口,比较简单就写了三个方法;MyUserServiceImpl是业务逻辑实现类。 User.java [java] packagecom.googlecode.garbagecan.test.socket.sample10; publicclassUserimplementsjava.io.Serializable{ privatestaticfinallongserialVersionUID=1L; privateStringname; privateStringpassword; publicUser(){ } publicUser(Stringname,Stringpassword){ this.name=name; this.password=password; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicStringgetPassword(){ returnpassword; } publicvoidsetPassword(Stringpassword){ this.password=password; } } MyUserService.java [java] packagecom.googlecode.garbagecan.test.socket.sample10; importjava.util.List; publicinterfaceMyUserService{ List<User>list(intsize); UserfindByName(Stringname); voidtest(); } MyUserServiceImpl.java [java] packagecom.googlecode.garbagecan.test.socket.sample10; importjava.util.ArrayList; importjava.util.List; publicclassMyUserServiceImplimplementsMyUserService{ @Override publicList<User>list(intsize){ List<User>users=newArrayList<User>(); for(inti=0;i<size;i++){ users.add(newUser("user_"+i,"password_"+i)); } returnusers; } @Override publicUserfindByName(Stringname){ returnnewUser(name,null); } @Override publicvoidtest(){ //donothing } } 2.服务器端类,主要有三个类MyServer,MyServerSimpleImpl和MyServerNIOImpl。MyServer是服务器端接口类,用来启动Socketserver;MyServerSimpleImpl和MyServerNIOImpl是两个实现类,其中MyServerSimpleImpl是使用简单的Socket实现的,MyServerNIOImpl是使用javanio包里的类实现的,这个实现会有更好的性能。 MyServer.java [java] packagecom.googlecode.garbagecan.test.socket.sample10; publicinterfaceMyServer{ publicvoidstartup()throwsException; publicvoidshutdown()throwsException; } MyServerSimpleImpl.java [java] packagecom.googlecode.garb