zoukankan      html  css  js  c++  java
  • (3)优化TCP编写客服端和服务端(上传图片)

    (3)优化TCP编写客服端和服务端(上传图片)

    此demo的在上一个的基础上加入缓冲流读取,提高数据的读与取的效率,首先要先启动服务端,否则报错,因为TCP是可靠协议,所以没有对应的服务端时会报错,发送数据为图片

    一.编写TCP协议服务端

     1   package demo.soket.tcp;
     2  3   import java.io.BufferedInputStream;
     4   import java.io.BufferedOutputStream;
     5   import java.io.FileOutputStream;
     6   import java.io.IOException;
     7   import java.net.ServerSocket;
     8   import java.net.Socket;
     9 10   //TCP协议服务端
    11   public class Server {
    12       public static void main(String[] args) {
    13           /**
    14            * 1.创建服务端ServerSocket对象
    15            * 2.监听socket连接
    16            * 3.通过返回的socket对象来获取io流里面的数据
    17            * 4.打印数据
    18            */
    19           //1.
    20           ServerSocket server=null;
    21           try {
    22               server=new ServerSocket(11111);
    23               //2.
    24               Socket client=server.accept();
    25               //3.
    26               //字节缓冲输入流,效率高
    27               BufferedInputStream bis=new BufferedInputStream(client.getInputStream());
    28               BufferedOutputStream os=new BufferedOutputStream(new FileOutputStream("客户端发过来的图片.jpg"));
    29               byte[] b=new byte[1024];
    30               int len=0;
    31               while((len=bis.read(b))!=-1) {
    32                   os.write(b, 0, len);
    33                   os.flush();//刷出缓冲流中的数据,关闭连接前一定要刷,否则会数据缺失
    34               }
    35               //缓冲流
    36               os.close();
    37               client.close();
    38               bis.close();
    39               server.close();
    40           } catch (IOException e) {
    41               e.printStackTrace();
    42           }
    43       }
    44   }

    二.编写TCP协议客服端

     1   package demo.soket.tcp;
     2  3   import java.io.BufferedInputStream;
     4   import java.io.BufferedOutputStream;
     5   import java.io.FileInputStream;
     6   import java.io.IOException;
     7   import java.net.Socket;
     8   import java.net.UnknownHostException;
     9 10   /**
    11    * TCP特点:
    12    * 1.建立连接,形成传输数据的通道
    13    * 2.在链接中进行大量数据传输
    14    * 3.通过三次握完成连接,是可靠协议,所以没有对应的服务端时会报错
    15    * 4.必建立连接,效率会稍低些
    16    * @author Administrator
    17    *
    18    */
    19   public class Client {
    20       public static void main(String[] args) {
    21           /**
    22            * 1.创建一个客服端的socket对象
    23            * 2.建立连接
    24            * 3.通过io流在管道里面传输数据
    25            * 写数据:输出流 getOutputStream() 
    26            * 接收数据:输入流 getInputStream() 
    27            * 4.关闭socket
    28            */
    29           //1.|2.
    30           Socket client=null;
    31           try {
    32               client=new Socket("192.168.95.2",11111);
    33               //3.
    34               BufferedOutputStream os=new BufferedOutputStream(client.getOutputStream());
    35               String path="C:\Users\Administrator\Pictures\微信图片_20200629170031.jpg";
    36               BufferedInputStream buf=new BufferedInputStream(new FileInputStream(path));
    37               byte[] b=new byte[1024];
    38               int len=0;
    39               while((len=buf.read(b))!=-1) {
    40                   os.write(b, 0, len);
    41                   os.flush();//关闭连接前一定要刷,否则会数据缺失
    42               }
    43                //关闭读文件操作
    44               buf.close();
    45               os.close();
    46           } catch (UnknownHostException e) {
    47               e.printStackTrace();
    48           } catch (IOException e) {
    49               e.printStackTrace();
    50           }finally {
    51               //4.
    52               if(client!=null) {
    53                   try {
    54                       client.close();
    55                   } catch (IOException e) {
    56                       e.printStackTrace();
    57                   }
    58               }
    59           }
    60       }
    61   }

    三 .demo运行

    刷新项目后会多一张上传的图片

  • 相关阅读:
    数组 A
    考试中。。。
    高精度加法
    1319:【例6.1】排队接水
    Docker基于容器创建镜像
    Docker上传/拉取阿里云镜像
    Docker配置阿里镜像加速器
    CentOS7安装、卸载Docker
    Python3+requests+unittest+log+excel+HTMLTestRunner+email框架接口自动化案例⑼——执行用例及GitHub源码地址
    Python3+requests+unittest+log+excel+HTMLTestRunner+email框架接口自动化案例⑻——测试用例
  • 原文地址:https://www.cnblogs.com/KdeS/p/13274476.html
Copyright © 2011-2022 走看看