zoukankan      html  css  js  c++  java
  • EchoServer

    服务端程序:

    import java.io.IOException;
    import java.io.PrintStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Scanner;
    
    public class EchoServer {
        public static void main(String[] args) throws IOException {
            ServerSocket serverSocket = new ServerSocket(8000);//设置服务监听端口
            System.out.println("等待客户端连接...");//打印提示信息
            Socket clientSocket = serverSocket.accept();//等待客户端连接
            Scanner scanner = new Scanner(clientSocket.getInputStream());//客户端输入流
            scanner.useDelimiter("
    ");//设置分隔符
            PrintStream outPrintStream = new PrintStream(clientSocket.getOutputStream());//客户端输出流
            boolean flag = true;//循环标记
            while (flag) {
                if(scanner.hasNext()) {//有数据接收
                    String string = scanner.next().trim();//接收数据内容
                    if("bye".equalsIgnoreCase(string)) {//结束标记
                        outPrintStream.println("Bye!");//回应信息
                        flag = false;//结束循环
                    }else {
                        outPrintStream.println("[ECHO]" + string);//Echo信息
                    }
                }
            }
            scanner.close();//关闭输入流
            outPrintStream.close();//关闭输出流
            clientSocket.close();//关闭客户端
            serverSocket.close();//关闭服务端
        }
    }

    客户端程序:

    package SocketDemo;
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.PrintStream;
    import java.net.Socket;
    import java.util.Scanner;
    
    public class EchoClient {
        private static final BufferedReader KEYBOARD_INPUT = new BufferedReader(new InputStreamReader(System.in));
        public static String getString(String prompt) throws Exception{//键盘信息输入
            System.out.print(prompt);
            String string = KEYBOARD_INPUT.readLine();
            return string;
        }
        
        public static void main(String[] args) throws Exception{
            Socket clientSocket = new Socket("localhost", 8000);//定义服务端的连接信息
            //现在的客户端需要有输入与输出的操作支持,所以依然要准备Scanner与PrintWriter
            Scanner scanner = new Scanner(clientSocket.getInputStream());//接收服务端输入内容
            scanner.useDelimiter("
    ");
            PrintStream outputPrintStream = new PrintStream(clientSocket.getOutputStream());//向服务端发送内容
            boolean flag = true;//循环标记
            while(flag) {//循环处理
                String inputString = getString("请输入内容:").trim();//获取键盘输入数据
                outputPrintStream.println(inputString);//加换行
                if(scanner.hasNext()) {//服务器端有回应
                    System.out.println(scanner.next());//输出回应信息
                }
                if("bye".equalsIgnoreCase(inputString)) {//结束判断
                    flag = false;//修改循环标记
                }
            }
            scanner.close();//关闭输入流
            outputPrintStream.close();//关闭输出流
            clientSocket.close();//关闭客户端
        }
    }
  • 相关阅读:
    计算机操作系统第四、五章自测题-存储管理
    oracle进制转换
    表空间、数据文件增长情况
    游标、type使用示例
    Linux如何查找大文件或目录总结-1127
    Linux如何查找大文件或目录总结
    工具: ass109.awk 分析 Oracle 的跟踪文件
    分页存储过程
    CSDN Oracle版精华帖荟萃
    vi 替换字符串
  • 原文地址:https://www.cnblogs.com/sunzhongyu008/p/11239860.html
Copyright © 2011-2022 走看看