java实现TCP文件上传

对于TCP文件上传

客户端上传文件,通过文件输出流输出,然后在服务端读取文件,并返回一个响应接收完毕的信息,客户端收到后关闭服务。

上传该文件:
在这里插入图片描述
客户端:

public class Client_upload {

    public static void main(String[] args) {
        Socket socket=null;
        OutputStream outputStream=null;
        FileInputStream fileInputStream=null;
        InputStream inputStream=null;
        try {
            //1.创建socket连接,连接到哪台服务器
          socket = new Socket(InetAddress.getByName("127.0.0.1"), 9999);
            //2.创建输出流
             outputStream = socket.getOutputStream();
            //3.创建文件输入流读取文件
            fileInputStream = new FileInputStream(new File("E:\\JAVA进阶复习\\网络编程\\kaiying.jpg"));
            //4.先读取文件,然后通过输出流发送出去
            int len;
            byte[] bytes=new byte[1024];
            while ((len=fileInputStream.read(bytes))!=-1){
                outputStream.write(bytes,0,len);
            }
            //发送完毕后,断开输出流
            socket.shutdownOutput();
            //接收服务端传来的接收完毕请求,确保服务端正确接收成功
            inputStream = socket.getInputStream();
            byte[] bytes1 = new byte[1024];
            int len2;
            while ((len2=inputStream.read(bytes1))!=-1){
                String s = new String(bytes1, 0, len2);
                System.out.println(s);
            }


        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                inputStream.close();
                fileInputStream.close();
                outputStream.close();
                socket.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

服务端:

public class Server_upload {

    public static void main(String[] args) {
        ServerSocket serverSocket=null;
        Socket accept=null;
        InputStream inputStream=null;
        FileOutputStream fileOutputStream=null;
        OutputStream outputStream=null;
        try {
            //1.创建ServerSocket对象
           serverSocket = new ServerSocket(9999);
            //2.监听客户端的连接,连接成功就返回一个socket对象
             accept = serverSocket.accept();
            //3.读取客户端传来的数据
             inputStream = accept.getInputStream();
             int len;
            byte[] bytes = new byte[1024];
            //4.创建一个文件输出流,获取到的文件用我们自定义的文件名称来表达(接收的数据,更名为kaiying_copy.jpg)
           fileOutputStream = new FileOutputStream(new File("kaiying_copy.jpg"));
            while ((len=inputStream.read(bytes))!=-1){
                fileOutputStream.write(bytes,0,len);
            }

            //接收完毕后,给客户端响应一个数据,告诉他已经接收完毕了
             outputStream = accept.getOutputStream();
           outputStream.write("我发送完毕了".getBytes());


        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                outputStream.close();
                fileOutputStream.close();
                inputStream.close();
                accept.close();
                serverSocket.close();
            } catch (Exception e) {
                e.printStackTrace();
            }


        }

    }
}

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨某人的快乐学习日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值