基于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 = //你的文件路径