文件格式:JPG
说明:文件上传需要安全性和完整性,所以上传文件需要使用可靠的TCP协议传输
服务端类:
import java.io.*;
import java.net.Socket;
public class ServerThread implements Runnable{
Socket socket;
public ServerThread(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
//处理客户端需求
int count=1;
try {
InputStream inputStream = socket.getInputStream();
File parent = new File("D:\\Main7");
if (!parent.exists()) {
parent.mkdir();
}
File file = new File(parent, socket.getInetAddress().getHostName() +
"("+count + ").jpg");
while (file.exists()) {
file=new File(parent, socket.getInetAddress().getHostName() +
"("+(count++) + ").jpg");
}
FileOutputStream outputStream=new FileOutputStream(file);
byte[] bytes = new byte[1024];
int temp;
while ((temp = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, temp);
}
socket.getOutputStream().write("上传成功".getBytes());
inputStream.close();
outputStream.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(socket.getInetAddress().getHostName()+"的文件保持成功");
}
}
服务端启动类:
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerStart { //JPG格式文件上传
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8080);
while (true) {
Socket socket = serverSocket.accept();
System.out.println("连接成功");
new Thread(new ServerThread(socket)).start();
}
}
}
客户端:
import java.io.*;
import java.net.Socket;
import java.util.Scanner;
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost", 8080);
Scanner sc = new Scanner(System.in);
System.out.println("请输入文件名");
FileInputStream fileInputStream = new FileInputStream("D:\\夸克网" +
"盘下载\\2021-03_390P\\" + sc.nextLine());
sc.close();
OutputStream outputStream = socket.getOutputStream();
byte[] bytes = new byte[1024];
int temp;
while ((temp = fileInputStream.read(bytes))!=-1) {
outputStream.write(bytes, 0, temp);
}
outputStream.flush();
fileInputStream.close();//读取完毕
socket.shutdownOutput();
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(
socket.getInputStream()
));
System.out.println(bufferedReader.readLine());
outputStream.close();
bufferedReader.close();
socket.close();
}
}