zoukankan      html  css  js  c++  java
  • Tcp实现简单的大小写转换功能

    有这样一个需求:

    客户端给读物段发送文本,服务端会将文本转换为大写再返回客户端

    而且客户端可以不断的进行文本转换,当客户端输入over时,转换结束。

    分析:

    既然是操作设备上的数据,那么久可以使用io技术,并按照io的操作规律来思考

    源:键盘录入

    目的:网络设备、网络输出流

    而且操作的是文本数据,可以选择字符流

    //客户端实现: 

    package com.shindo.java.tcp;
    import java.io.*;
    import java.net.*;
    /**
     * 步骤:
     * 1、建立服务
     * 2、获取键盘输入
     * 3、将数据发送给服务端
     * 4、获取服务端返回的数据
     * 5、结束,关闭资源
     * 都是文本数据,可以使用字符流进行操作,同时提高效率,加入缓冲
     */
    public class TransClient {
        public static void main(String[] args){
            try {
                Socket s = new Socket("127.0.0.1",11013);
                //定义读取键盘输入的输入流对象
                BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
                
                //定义目的,将数据写入到Socket的输出流,发给服务端
                //方法1:
    //            BufferedWriter bufOut = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
                //方法2:第二个参数为自动刷新的标志,true为自动刷新
                PrintWriter out = new PrintWriter(s.getOutputStream(),true);
                
                //定义一个Socket的读取流,读取服务端返回的大写信息
                BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
                
                String line = null;
                while((line = bufr.readLine()) != null){
                    if("over".equals(line)) break;
        
                    //方法1:
    //                bufOut.write(line);
    //                bufOut.newLine();//为了让流结束
    //                bufOut.flush();//刷新缓冲区
                    
                    //方法2:
                    out.println(line);
                    
                    String strBack = bufIn.readLine();
                    System.out.println("服务端响应:" + strBack );
                }
                
            } catch (Exception e) {
                e.printStackTrace();
            }
            
        }
    }
    View Code

    //服务端实现:

    package com.shindo.java.tcp;
    import java.io.*;
    import java.net.*;
    /**
     * 服务端
     * 流:Socket读取流
     * 目的:Socket输出流
     * 都是文本装饰
     */
    public class TransServer {
        public static void main(String[] args){
            try {
                //获取客户端对象
                ServerSocket ss = new ServerSocket(11013);
                Socket s = ss.accept();
                
                //打印请求进来的客户端对象
                String ip = s.getInetAddress().getHostAddress();
                System.out.println(ip + "...... is connected");
                
                //读取Socket读取流中的数据
                BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
                
                //目的Socket输出流,将大写数据写入Socket输出流,发给客户端
                //方法1:
    //            BufferedWriter bufOut = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
                
                //方法2:第二个参数为自动刷新的标志,true为自动刷新
                PrintWriter out = new PrintWriter(s.getOutputStream(),true);
                
                String line = null;
                while((line = bufIn.readLine())!= null){
                    //打印客户端发送过来的数据
                    System.out.println(line);
                    
                    //将数据转换为大写,然后发送给客户端
                    //方法1:
    //                bufOut.write(line.toUpperCase());
    //                bufOut.newLine();
    //                bufOut.flush();
                    
                    //方法2:
                    out.println(line.toUpperCase());
                    
                    s.close();
                    ss.close();
                }
                
                
                
                
                
            } catch (Exception e) {
                e.printStackTrace();
            }
            
        }
    }
    View Code

    效果如图:

    客户端:

    服务端:

  • 相关阅读:
    康复计划
    Leetcode 08.02 迷路的机器人 缓存加回溯
    Leetcode 38 外观数列
    Leetcode 801 使序列递增的最小交换次数
    Leetcode 1143 最长公共子序列
    Leetcode 11 盛水最多的容器 贪心算法
    Leetcode 1186 删除一次得到子数组最大和
    Leetcode 300 最长上升子序列
    Leetcode95 不同的二叉搜索树II 精致的分治
    Leetcode 1367 二叉树中的列表 DFS
  • 原文地址:https://www.cnblogs.com/shindo/p/5297272.html
Copyright © 2011-2022 走看看