欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入 2.2.2 KnockKnockProtocol 双方通信协义处理类。 package test1.service; import java.io.PrintWriter; import test1.error.ResponseError; /** * @作者:刘家鸽 * @功能:协义处理类 */ public class
欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入
2.2.2 KnockKnockProtocol 双方通信协义处理类。
package test1.service;
import java.io.PrintWriter;
import test1.error.ResponseError;
/**
* @作者:刘家鸽
* @功能:协义处理类
*/
public class KnockKnockProtocol implements KnockKnockProtocolFace {
private String response = null;
//获得客户端协义
public String processInput(String request) throws ResponseError {
if (request.equalsIgnoreCase(KnockKnockProtocolFace.QUERY_USER)) {
response = this.processQUERY_USER(request);
} else {
response = KnockKnockProtocolFace.NOT_EXIST_REQUEST_PROTOCOL_ERROR;
}
return this.response;
}
//处理QUERY_USER协义
public String processQUERY_USER(String request) throws ResponseError {
this.response = this.QUERY_USER_SUCCEED_INFO;
return this.response;
}
// 发送服务端请求
public void sendResponse(PrintWriter pw, String response) throws ResponseError {
pw.println(response);
pw.flush();
}
}
2.2.3 KnockKnockProtocolFace 双方通信协义处理接口。
package test1.service;
import java.io.PrintWriter;
import test1.error.ResponseError;
/**
* @作者:刘家鸽
* @功能:协义处理类接口
*/
public interface KnockKnockProtocolFace { //此属性没有从数据库或属性文件中读取。
public static final String EXIT = "EXIT";
public static final String QUERY_USER = "QUERY_USER";
public static final String ERROR = "ERROR";
public static final String QUERY_USER_ERROR_INFO = "QUERY_USER_ERROR";
public static final String QUERY_USER_SUCCEED_INFO = "QUERY_USER_SUCCEED";
public static final String NOT_EXIST_REQUEST_PROTOCOL_ERROR = "NOT_EXIST_REQUEST_PROTOCOL_ERROR";
public String processInput(String request) throws ResponseError;
public String processQUERY_USER(String request) throws ResponseError;
public void sendResponse(PrintWriter pw,String response) throws ResponseError;
}
2.2.4 MyService 服务端监听处理主方法类。
package test1.service;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
* @作者:刘家鸽
* @功能:服务监听
*/
public class MyService {
private ServerSocket ss = null;
private KKMultiServerThread kkst = null;
private int PORT = 65534;
private long MILLIS = 0l;
private Socket s = null;
// 服务
public static void main(String[] args) {
new MyService().startMainService();
}
// 开启服务
private void startMainService() {
try {
// 设置服务端提供服端口
ss = new ServerSocket(this.PORT);
KnockKnockProtocol kkpl = new KnockKnockProtocol();
kkst = new KKMultiServerThread();
// /s = ss.accept();
int count = 0;
// 读取客户端信息
while (true) {
System.out.println("等待读取客户端信息");
//s = ss.accept();
KKMultiServerThread st = new KKMultiServerThread(ss.accept(),
new KnockKnockProtocol());
st.start();
st.sleep(0);
}
// 关闭客户端连接
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
System.out.println("服务端关闭客户端连接");
if (s != null)
s.close();
if (ss != null)
ss.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
[1] [2] [3]