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);
            // 出错,打印出错信息
        }
    }
}

 

posted @ 2015-06-06 09:52  Z_Elise  阅读(300)  评论(0编辑  收藏  举报