JavaSwing课设用CS架构框架

描述

用于Java Swing的CS架构项目,需要使用JSONObject来协助实现功能,主要目标是简化网络连接的部分

目录结构

核心的文件如下:

server

|-Envelope 信封类

|-FunInterface 功能接口

|-ServerFunction 连接框架

client

|-Envelope 信封类

|-ClientFunction 请求类

使用方式

客户端

当需要发送一个请求到服务端时,实例化一个ClientFunction,参数分别是服务器IP和端口

ClientFunction test=new ClientFunction("127.0.0.1", 10000);//新建一个请求类

发送请求的时候,首先要构造一个信封类,其中格式需要与服务端进行协商,通常情况下,客户端发送的Envelope的code表示请求类型,object表示携带的信息,message可以用来传输某种文字信息

如:

JSONObject json=new JSONObject();//将数据放入
json.put("username", "test");//放入数据
json.put("password", "1256");
Envelope enve=new Envelope(0,"success",json);//新建信封,code为0表示为注册

发送请求,并接受服务端的响应

Envelope res=test.sendRequest(enve);

从服务器取出返回的Envelope,并根据code判断返回情况再进行相应处理,通常,code为0表示成功,可以从object里取出服务器返回的对象并进一步处理,否则不成功,并可以直接取出其message的信息返回给用户

if(res.getCode()==0){//如果服务器响应状态为0
System.out.println("注册成功");//注册成功
}else{//否则
System.out.println(res.getMessage());//打印失败原因
}

服务端

具体服务的实现类需要集成FunInterface接口并实现deal方法,它会传入一个参数,是来自客户端的信封,因此首先将信封实例化

@Override
public String deal(String str) {
Envelope env=new Envelope(str);//首先将请求实例化,便于进一步处理
根据客户端发来的信封的code值判断处理方式,并进行处理,最后返回仍为Envelope对象
JSONObject json=JSONObject.fromObject(env.getObject());
if(env.getCode()==0){//如果是处理注册
if(userList.get(json.getString("username"))!=null){//如果用户名已经被注册
return new Envelope(1,"用户名已被注册",null).toString();//返回相关信息
}
userList.put(json.getString("username"),json.getString("password"));//放入一个用户名--密码对
System.out.println("当前数据库信息为"+JSONObject.fromObject(userList).toString());
return new Envelope(0,"success",null).toString();//返回注册成功信息
}

实现了处理逻辑之后,即可开放对应的端口,使之持续进行服务

public static void main(String[] args) {
new Thread(new ServerFunction(10000,new LoginFun())).start();//在10000号端口开启注册登录服务
}

*文件中附带一个注册登录的演示DEMO