zoukankan      html  css  js  c++  java
  • (2)使用TCP编写客服端和服务端(上传图片)

    (2)使用TCP编写客服端和服务端(上传图片)

    此demo的要先启动服务端,否则报错,因为TCP是可靠协议,所以没有对应的服务端时会报错,发送数据为图片

    一.编写TCP协议服务端

     1   package demo.soket.tcp;
     2  3   import java.io.FileOutputStream;
     4   import java.io.IOException;
     5   import java.io.InputStream;
     6   import java.net.ServerSocket;
     7   import java.net.Socket;
     8  9   //TCP协议服务端
    10   public class Server {
    11       public static void main(String[] args) {
    12           /**
    13            * 1.创建服务端ServerSocket对象
    14            * 2.监听socket连接
    15            * 3.通过返回的socket对象来获取io流里面的数据
    16            * 4.打印数据
    17            */
    18           //1.
    19           ServerSocket server=null;
    20           try {
    21               server=new ServerSocket(11000);
    22               //2.
    23               Socket socket=server.accept();
    24               //3.
    25               InputStream in=socket.getInputStream();
    26               FileOutputStream fos=new FileOutputStream("客服端发过来的图片.gif");
    27               byte[] b=new byte[1024];
    28               int len=0;
    29               while((len=in.read(b))!=-1) {
    30                   fos.write(b, 0, len);
    31               }
    32               //写完之后关闭fos与读in
    33               fos.close();
    34               in.close();
    35           } catch (IOException e) {
    36               e.printStackTrace();
    37           }
    38       }
    39   }
    40

    二.编写TCP协议客服端

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

    三 .demo运行

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

  • 相关阅读:
    移动端头部声明
    清除浮动绝招
    图片采用base64压缩,可以以字符串的形式传送base64给服务端转存为图片
    js cookie的封装和调用
    js 封装设计cookie
    div可编辑状态设置
    align使图片和文字居中
    布局如何做到自适应?
    Jmeter学习笔记四_压力测试
    Pycharm中配置Git版本管理
  • 原文地址:https://www.cnblogs.com/KdeS/p/13267543.html
Copyright © 2011-2022 走看看