基于Socket、ServerSocket、IO流的TCP网络编程之图片上传(简易版FTP)

基于TCP实现,一个Clinet(发送端)向,一个Server(接收端)上传图片文件的功能。
要求,客户端上上传的图片路径,需要从配置未见.properties文件中读取

客户端:

package com.homework.homework0806.picture;

import java.io.*;
import java.net.Socket;
import java.util.Properties;

/**
 * @Author jinman1012@qq.com   2020/8/6 19:11
 * @Version 1.0
 */
public class Client {
    public static void main(String[] args) throws IOException {
        //Properties类的初始化
        Properties pt = new Properties();
        //文件字节输入流初始化
        FileInputStream ins;

        ins = new FileInputStream("test.properties");
        //装载key-value
        pt.load(ins);

        String targetIp = pt.getProperty("targetIp");
        int port = Integer.parseInt(pt.getProperty("port"));
        String pathPicture = pt.getProperty("pathPicture");

        Socket socket = new Socket(targetIp, port);
        ins = new FileInputStream(pathPicture);
        BufferedInputStream bis = new BufferedInputStream(ins);
        OutputStream out = socket.getOutputStream();
        BufferedOutputStream bos = new BufferedOutputStream(out);
        //经典文件输出流
        int len;
        byte[] buf = new byte[1024];
        while ((len = bis.read(buf)) != -1) {
            bos.write(buf, 0, len);
        }
        //将最后的字节数组内容上传
        bos.flush();
        //客户端发送TCP的正常连接终止序列
        socket.shutdownOutput();
        //客户端接收服务端上传完成反馈
        InputStream inputStream = socket.getInputStream();
        len = inputStream.read(buf);
        System.out.println(new String(buf, 0, len));
        //资源关闭
        bis.close();
        bos.close();
        socket.close();
    }
}

服务端:

package com.homework.homework0806.picture;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Properties;

/**
 * @Author jinman1012@qq.com   2020/8/6 19:11
 * @Version 1.0
 */
public class Server {
    public static void main(String[] args) throws IOException {
        Properties pt = new Properties();
        FileInputStream ins = new FileInputStream("test.properties");
        pt.load(ins);
        int port = Integer.parseInt(pt.getProperty("port"));
        ServerSocket client = new ServerSocket(port);
        Socket socket = client.accept();
        InputStream in = socket.getInputStream();
        BufferedInputStream bis = new BufferedInputStream(in);
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("upload_picture.jpg"));
        int len;
        byte[] buf = new byte[1024];
        while ((len = bis.read(buf)) != -1) {
            bos.write(buf, 0, len);
        }
        bos.flush();
        //上传完毕,发送信息告知客户端
        OutputStream outputStream = socket.getOutputStream();
        outputStream.write("upload complete!".getBytes());
        //关闭流
        bis.close();
        bos.close();
        socket.close();
    }
}

配置文件:
test.properties
port = 11111
targetIp = 127.0.0.1
pathPicture = //你的文件路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值