• 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

    效果如图:

    客户端:

    服务端:

  • 相关阅读:
    转:Caused by: java.lang.NoSuchMethodError: org.apache.log4j.Category.log
    maven安装
    eclipse安装插件
    java.lang.ClassNotFoundException: com.*.listener.ConfigInfoReader
    oracle
    myeclipse中文乱码,JSP页面乱码
    ansible 列表变量、字典变量
    python模块
    python函数
    python数据类型2
  • 原文地址:https://www.cnblogs.com/shindo/p/5297272.html
Copyright © 2020-2023  润新知