《javasocket客户端与服务端同步通信实例》由会员分享,可在线阅读,更多相关《javasocket客户端与服务端同步通信实例(14页珍藏版)》请在金锄头文库上搜索。
1、javasocket 客户端与服务端同步通信实例工作中没涉及有关JAVA SOCKET 编程的实际经历,但理论大概了解。想正明一下自已的对JAVA SOCKET 理解写个通信 TEST,通过 TEST 验证了基本与理论相近。下面是TEST SRC CODE如果有牛人指点一二在下谢谢了,想写个类似 QQ 的局网通信程序,可没有太多时间如果您有JAVASRC CODE 请与我联系。1.开发工具: eclips3.22.工程基本结构:2.1 工程名: SocketTest2.2 包 test1.service 含类功能说明:2.2.1 KKMultiServerThread服务端多线程处理类.2.2
2、.2 KnockKnockProtocol双方通信协义处理类。2.2.3 KnockKnockProtocolFace双方通信协义处理接口。2.2.4 MyService服务端监听处理主方法类。2.2.5 MyClient客户端主方法类。2.3 包 test1.error 含类功能说明:2.3.1 ResponseError 服务端处理客户端响应异常类。3.工程基本结构具体说明及原码。2.1 工程名: SocketTest2.2 包 test1.service 含类功能说明:2.2.1 KKMultiServerThread服务端多线程处理类.package test1.service;imp
3、ort java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import .InetAddress;import .Socket;import test1.error.ResponseError;/* 作者:刘家鸽* 功能:服务端处理客户端请求返回响应(多线程)*/public class KKMultiServerThread extends Thread private Socket clentSocket = null;
4、private KnockKnockProtocol kkpf = null;private PrintWriter pw = null;private BufferedReader bir = null;public KKMultiServerThread() super(KKMultiServerThread);public KKMultiServerThread(Socket clentSocket) super(KKMultiServerThread);this.clentSocket = clentSocket;public KKMultiServerThread(Socket cl
5、entSocket, KnockKnockProtocolFace kkpf) super(KKMultiServerThread); this.clentSocket = clentSocket; this.kkpf = (KnockKnockProtocol) kkpf;public Socket getClentSocket() return clentSocket;public void setClentSocket(Socket clentSocket) this.clentSocket = clentSocket; public KnockKnockProtocol getKkpf
6、() return kkpf;public void setKkpf(KnockKnockProtocol kkpf) this.kkpf = kkpf;/ 运行线程public void run() try pw = new PrintWriter(clentSocket.getOutputStream();bir = new BufferedReader(new InputStreamReader(clentSocket.getInputStream();String request = bir.readLine();System.out.println( 客户端请求: + request
7、);InetAddress ia = clentSocket.getInetAddress();System.out.println( 客户端 ip:+ia.getHostAddress();String response = kkpf.processInput(request);/ 向客户端发送System.out.println( 返回客户端响应: + response); kkpf.sendResponse(pw, response); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace();
8、 catch (ResponseError e) / TODO Auto-generated catch block e.printStackTrace(); finally try System.out.println( 关闭客户与服务端的连接 );this.pw.close();this.bir.close();this.clentSocket.close(); catch (Exception e) e.printStackTrace();2.2.2 KnockKnockProtocol 双方通信协义处理类。package test1.service;import java.io.Pri
9、ntWriter;import test1.error.ResponseError;/* 作者:刘家鸽* 功能:协义处理类*/public class KnockKnockProtocol implements KnockKnockProtocolFace private String response = null;/获得客户端协义public String processInput(String request) throws ResponseErrorif(request.equalsIgnoreCase(KnockKnockProtocolFace.QUERY_USER) respon
10、se = this.processQUERY_USER(request); else response =KnockKnockProtocolFace.NOT_EXIST_REQUEST_PROTOC OL_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
11、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 /此属性没有从数据库或属性
12、文件中读取。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 StringNOT_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)thro