zoukankan      html  css  js  c++  java
  • java 26

    上次所写的代码中,客户端和服务器端所进行的数据传输所用的是字节流。

    优化:

      A:这次,为了高效,对这个字节流通过转换流来进行包装,包装成高效字符流。

      B:这次,传输的数据是通过键盘录入的数据。

    服务器端代码:

      

     1 /*
     2  TCP协议:
     3  服务器端
     4  */
     5 public class ServerDemo {
     6     public static void main(String[] args) throws IOException {
     7 
     8         // 创建socket接收端对象监听
     9         ServerSocket ss = new ServerSocket(10010);
    10         
    11         // 创建socket对象
    12         Socket s = ss.accept();
    13         
    14         // 创建输入流,由于客户端发送过来的是字符流,而通道的流是字节流
    15         // 所以需要对通道里的字节流包装下 (socket的字节流 → 转换流 → 高效字符流)
    16         BufferedReader br = new BufferedReader(new InputStreamReader(
    17                 s.getInputStream()));
    18         
    19         // 由于是高效字符流了,所以一次性读取一行
    20         String line = null;
    21         while ((line = br.readLine()) != null) {
    22 
    23             System.out.println(line);
    24         }
    25         
    26         // 释放资源
    27         s.close();
    28     }
    29 }

    客户端:

     1 /*
     2  TCP传输:
     3  发送键盘录入的数据到服务器端
     4  */
     5 public class ClientDemo {
     6     public static void main(String[] args) throws IOException {
     7 
     8         // 创建socket对象
     9         Socket s = new Socket("172.19.12.233", 10010);
    10 
    11         // 创建键盘输入流 InputStreamReader 是字节流通向字符流的桥梁
    12         BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
    13         
    14         // 由于TCP传输中,信息传输是字节流,所以要对它进行包装成字符流
    15         // 把socket的字节输出流通过转换流包装成高效字符输出流
    16         BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
    17                 s.getOutputStream()));
    18         
    19         //读取键盘录入的数据,并传输到服务器端
    20         String line = null;
    21         while((line = is.readLine()) != null){
    22             // 设个键盘关闭条件
    23             if (line.equals("esc")) {
    24                 break;// 这里退出了,就等于br退出了,就等于s退出了。所以后面br不用释放资源
    25             }
    26             
    27             bw.write(line);
    28             bw.newLine();
    29             bw.flush();
    30         }
    31         //释放资源
    32         s.close();
    33         
    34         
    35     }
    36 
    37 }
  • 相关阅读:
    Jsp的内置标签和jstl标签
    Jsp中的EL表达式
    JSP和servlet结合案例
    Jsp:内置对象和四种域对象的理解
    编码实战Web端联系人的增删改查
    Session案例
    Cookie案例分析
    会话数据的保存——cookie
    ServletContext和ServletConfig
    Servlet(1)
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5964832.html
Copyright © 2011-2022 走看看