设为首页 加入收藏

TOP

Javasocket客户端与服务端同步通信实例
2014-11-16 13:20:34 来源: 作者: 【 】 浏览:19
Tags:Javasocket 客户端 服务 同步 通信 实例

  导读:工作中没涉及有关JAVA SOCKET编程的实际经历,但理论大概了解。想正明一下自已的对JAVA SOCKET理解写个通信TEST,通过TEST验证了基本与理论相近。


  1.开发工具:eclips3.2


  2.工程基本结构:


  2.1 工程名:SocketTest


  2.2 包test1.service含类功能说明:


  2.2.1 KKMultiServerThread 服务端多线程处理类.


  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 工程名:SocketTest


  2.2 包test1.service含类功能说明:


  2.2.1 KKMultiServerThread 服务端多线程处理类.


  package test1.service;


  import java.io.BufferedReader;


  import java.io.IOException;


  import java.io.InputStreamReader;


  import java.io.PrintWriter;


  import java.net.InetAddress;


  import java.net.Socket;


  import test1.error.ResponseError;


  /**


  * @功能:服务端处理客户端请求返回响应(多线程)


  */


  public class KKMultiServerThread extends Thread {


  private Socket clentSocket = null;


  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 clentSocket, 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() {


  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);


  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();


  } 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();


  }


  }


  }


  }


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java中的闭包与回调 下一篇Java中hashmap和hashtable的区别

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: