文中引用了孙老师的代码,并注明。 import java.io.*; import java.net.*; public class EchoServer { private int port=8888; private ServerSocket serverSocket; public EchoServer() throws IOException { serverSocket = new ServerSocket(port); System.out.println("服务器启动"); } public String echo(String msg) { return "echo:" + msg; } private PrintWriter getWriter(Socket socket)throws IOException{ OutputStream socketOut = socket.getOutputStream(); return new PrintWriter(socketOut,true); } private BufferedReader getReader(Socket socket)throws IOException{ InputStream socketIn = socket.getInputStream(); return new BufferedReader(new InputStreamReader(socketIn)); } public void service() { while (true) { Socket socket=null; try { socket = serverSocket.accept(); //等待客户连接 System.out.println("New connection accepted " +socket.getInetAddress() + ":" +socket.getPort()); BufferedReader br =getReader(socket); PrintWriter pw = getWriter(socket); String msg = null; while ((msg = br.readLine()) != null) { System.out.println(msg); pw.println(echo(msg)); if (msg.equals("bye")) //如果客户发送的消息为“bye”,就结束通信 break; } }catch (IOException e) { e.printStackTrace(); }finally { try{ if(socket!=null)socket.close(); //断开连接 }catch (IOException e) {e.printStackTrace();} } } } public static void main(String args[])throws IOException { new EchoServer().service(); } } /**************************************************** * 作者:孙卫琴 * * 来源:<<Java网络编程精解>> * * 技术支持网址:www.javathinker.org * ***************************************************/ import java.net.*; import java.io.*; import java.util.*; public class EchoClient { private String host="localhost"; private int port=8888; private Socket socket; public EchoClient()throws IOException{ socket=new Socket(host,port); } public static void main(String args[])throws IOException{ new EchoClient().talk(); } private PrintWriter getWriter(Socket socket)throws IOException{ OutputStream socketOut = socket.getOutputStream(); return new PrintWriter(socketOut,true); } private BufferedReader getReader(Socket socket)throws IOException{ InputStream socketIn = socket.getInputStream(); return new BufferedReader(new InputStreamReader(socketIn)); } public void talk()throws IOException { try{ BufferedReader br=getReader(socket); PrintWriter pw=getWriter(socket); BufferedReader localReader=new BufferedReader(new InputStreamReader(System.in)); String msg=null; while((msg=localReader.readLine())!=null){ pw.println(msg); System.out.println(br.readLine()); if(msg.equals("bye")) break; } }catch(IOException e){ e.printStackTrace(); }finally{ try{socket.close();}catch(IOException e){e.printStackTrace();} } } } /**************************************************** * 作者:孙卫琴 * * 来源:<<Java网络编程精解>> * * 技术支持网址:www.javathinker.org * ***************************************************/