Client和Server的运行原则(四则运算)
import java.io.*; import java.net.*; public class TalkClient { public static void main(String args[]) { try { // 向本机的4700 端口发出客户请求 Socket socket = new Socket("127.0.0.1", 4700); if (socket.isConnected()) { System.out.println("success!"); } // 由系统标准输入设备构造BufferedReader 对象 BufferedReader sin = new BufferedReader(new InputStreamReader( System.in)); // 由Socket 对象得到输出流,并构造PrintWriter 对象 PrintWriter os = new PrintWriter(socket.getOutputStream()); // 由Socket 对象得到输入流,并构造相应的BufferedReader 对象 BufferedReader is = new BufferedReader(new InputStreamReader( socket.getInputStream())); String readline; // 从系统标准输入读入一字符串 readline = sin.readLine(); // 若从标准输入读入的字符串为 "bye"则停止循环 while (!readline.equals("bye")) { // 将从系统标准输入读入的字符串输出到Server os.println(readline); // 刷新输出流,使Server 马上收到该字符串 os.flush(); // 在系统标准输出上打印读入的字符串 // System.out.println("Client:" + readline); // 从Server 读入一字符串,并打印到标准输出上 System.out.println("Server:" + is.readLine()); // 从系统标准输入读入一字符串 readline = sin.readLine(); } // 继续循环 os.close(); // 关闭Socket 输出流 is.close(); // 关闭Socket 输入流 socket.close(); // 关闭Socket } catch (Exception e) { System.out.println("Error" + e); // 出错,则打印出错信息 } } }
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 TalkServer1 { public static void main(String args[]) { try { ServerSocket server = null; try { server = new ServerSocket(4700); // 创建一个ServerSocket 在端口4700 监听客户请求 } catch (Exception e) { System.out.println("can not listen to:" + e); // 出错,打印出错信息 } Socket socket = null; try { socket = server.accept(); // 使用accept()阻塞等待客户请求,有客户 // 请求到来则产生一个Socket 对象,并继续执行 } catch (Exception e) { System.out.println("Error." + e); // 出错,打印出错信息 } //String line; BufferedReader is = new BufferedReader(new InputStreamReader( socket.getInputStream())); // 由Socket 对象得到输入流,并构造相应的BufferedReader 对象 PrintWriter os = new PrintWriter(socket.getOutputStream()); // 由Socket 对象得到输出流,并构造PrintWriter 对象 //BufferedReader sin = new BufferedReader(new InputStreamReader( // System.in)); // 由系统标准输入设备构造BufferedReader 对象 String q = manage(is); // 在标准输出上打印从客户端读入的字符串 //line = sin.readLine(); // 从标准输入读入一字符串 while (q!="bye") { // 如果该字符串为 "bye",则停止循环 os.println(q); // os.println(line); // System.out.println("再见为什么不行"); // 向客户端输出该字符串 os.flush(); // 刷新输出流,使Client 马上收到该字符串 //System.out.println("Server:" + line); // 在系统标准输出上打印读入的字符串String s = is.readLine(); q = manage(is); // 从Client 读入一字符串,并打印到标准输出上 //line = sin.readLine(); // 从系统标准输入读入一字符串 } // 继续循环 os.close(); // 关闭Socket 输出流 is.close(); // 关闭Socket 输入流 socket.close(); // 关闭Socket server.close(); // 关闭ServerSocket } catch (Exception e) { System.out.println("Error:" + e); // 出错,打印出错信息 } } private static String manage(BufferedReader is) throws IOException { String s = is.readLine(); int q = 0; for (int i = 0; i < s.length(); i++) { if (Character.toString(s.charAt(i)).equals("+")) { q = Integer.parseInt(s.substring(0, i)) + Integer.parseInt(s.substring(i + 1)); break; } else if (Character.toString(s.charAt(i)).equals("-")) { q = Integer.parseInt(s.substring(0, i)) - Integer.parseInt(s.substring(i + 1)); break; } else if (Character.toString(s.charAt(i)).equals("*")) { q = Integer.parseInt(s.substring(0, i)) * Integer.parseInt(s.substring(i + 1)); break; } else if (Character.toString(s.charAt(i)).equals("/")) { q = Integer.parseInt(s.substring(0, i)) / Integer.parseInt(s.substring(i + 1)); break; } } System.out.println("Client:" + s + "=" + q); return s + "=" + q; } }
import java.io.*; import java.net.*; import java.applet.Applet; public class TalkServer { public static void main(String args[]) { int a = 0, c = 0, index = 0; String b = null; int sum = 0; try { ServerSocket server = null; try { server = new ServerSocket(4700); // 创建一个ServerSocket 在端口4700 监听客户请求 } catch (Exception e) { System.out.println("can not listen to:" + e); // 出错,打印出错信息 } Socket socket = null; try { socket = server.accept(); // 使用accept()阻塞等待客户请求,有客户 // 请求到来则产生一个Socket 对象,并继续执行 } catch (Exception e) { System.out.println("Error." + e); // 出错,打印出错信息 } String line; BufferedReader is = new BufferedReader(new InputStreamReader( socket.getInputStream())); // 由Socket 对象得到输入流,并构造相应的BufferedReader 对象 PrintWriter os = new PrintWriter(socket.getOutputStream()); // 由Socket 对象得到输出流,并构造PrintWriter 对象 // BufferedReader sin = new BufferedReader(new InputStreamReader( //System.in)); // 由系统标准输入设备构造BufferedReader 对象 //System.out.println("Client:" + is.readLine()); // 在标准输出上打印从客户端读入的字符串 line = is.readLine(); // 从标准输入读入一字符串 while (!line.equals("bye")) { // 如果该字符串为 "bye",则停止循环 if (line.contains("+")) { index = line.indexOf("+"); a = Integer.valueOf(line.substring(0, index)); b = line.substring(index, index + 1); c = Integer.valueOf(line.substring(index + 1, line.length())); sum = a + c; } else if (line.contains("-")) { index = line.indexOf("-"); a = Integer.valueOf(line.substring(0, index)); b = line.substring(index, index + 1); c = Integer.valueOf(line.substring(index + 1, line.length())); sum = a - c; } else if (line.contains("*")) { index = line.indexOf("*"); a = Integer.valueOf(line.substring(0, index)); b = line.substring(index, index + 1); c = Integer.valueOf(line.substring(index + 1, line.length())); sum = a * c; } else if (line.contains("/")) { index = line.indexOf("/"); a = Integer.valueOf(line.substring(0, index)); b = line.substring(index, index + 1); c = Integer.valueOf(line.substring(index + 1, line.length())); sum = a / c; } os.println(a+b+c+"="+sum); // 向客户端输出该字符串 os.flush(); // 刷新输出流,使Client 马上收到该字符串 //System.out.println("Server:" + line); // 在系统标准输出上打印读入的字符串 //System.out.println("Client:" + is.readLine()); // 从Client 读入一字符串,并打印到标准输出上 line = is.readLine(); // 从系统标准输入读入一字符串 } // 继续循环 os.close(); // 关闭Socket 输出流 is.close(); // 关闭Socket 输入流 socket.close(); // 关闭Socket server.close(); // 关闭ServerSocket } catch (Exception e) { System.out.println("Error:" + e); // 出错,打印出错信息 } } }