MEC@JavaSE@实战篇@笔记07@网络编程实例

一、图片上传案例

1、图解

2、代码实现

客户端发送文件:

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
​
public class Test客户端 {
   public static void main(String[] args) throws IOException {
​
       //创建客户端对象
       Socket s = new Socket("192.168.171.32",50000);
​
       //创建输入流
       FileInputStream fis = new FileInputStream("C:\\Users\\jin\\Desktop\\123.jpg");
​
       //获取输出流
       OutputStream os = s.getOutputStream();
​
       byte[] bys = new byte[1024];
       int len;
       //循环读取数据
       while((len=fis.read(bys)) != -1){
           //输出数组数据
           os.write(bys,0,len);
       }
​
       //通知服务器发送数据结束!
       s.shutdownOutput();
​
       //接受服务器发回来的结果
       //获取输入流
       InputStream is = s.getInputStream();
       //接受数据
       len = is.read(bys);
       //打印
       System.out.println(new String(bys,0,len));
​
       //关闭资源
       fis.close();
       s.close();
   }
}

服务端接收文件:

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
​
public class Test服务端 {
   public static void main(String[] args) throws IOException {
       //创建服务端对象
       ServerSocket ss = new ServerSocket(50000);
​
       while(true) {
           //接受客户端
           Socket s = ss.accept();
​
           //获取输入流
           InputStream is = s.getInputStream();
           //获取时间毫秒值
           long time = System.currentTimeMillis();
           //创建输出流
           FileOutputStream fos = new FileOutputStream("C:\\Users\\jin\\Desktop\\图片上传" + time + ".jpg");
​
           //定义数组
           byte[] bys = new byte[1024];
           //定义int代表每次实际读取到的字节个数
           int len;
           System.out.println(1);
           //循环读取从客户端发来的数据
           while ((len = is.read(bys)) != -1) {
               //把数据保存到硬盘上
               fos.write(bys, 0, len);
           }
​
           //服务端接受完数据 给客户端会送“上传成功”
           //获取输出流
           OutputStream os = s.getOutputStream();
           //输出数据
           os.write("上传功能".getBytes());
​
           //关闭资源
           fos.close();
           //ss.close();
       }
   }
}

循环发送数据的问题:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值