使用java写出代码。 文件上传案例需求如下 客户端将本地文件上传到服务器接收服务器的反馈 服务器接收客户端上传的文件上传完毕后给出反馈1、服务器代码优化:循环 需求:通过循环完成多次上传完成代码 问题:多次上传虽然成功控制台也有成功提示但是由于文件名写死了1png新的上传会覆盖旧的文件所以始终只能看到一个文件 解决:目前通过定义整数变量给文件命名每次上传让
客户端代码:
import java.io.*;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost", 8888);
File file = new File("test.txt");
InputStream inputStream = new FileInputStream(file);
OutputStream outputStream = socket.getOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, len);
}
socket.shutdownOutput();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String message = bufferedReader.readLine();
System.out.println("服务器反馈:" + message);
bufferedReader.close();
outputStream.close();
inputStream.close();
socket.close();
}
}
服务器代码:
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8888);
int count = 1;
while (true) {
Socket socket = serverSocket.accept();
InputStream inputStream = socket.getInputStream();
File file = new File("test" + count + ".txt");
OutputStream outputStream = new FileOutputStream(file);
byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, len);
}
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
bufferedWriter.write("上传成功!");
bufferedWriter.newLine();
bufferedWriter.flush();
System.out.println("第" + count + "次上传成功!");
count++;
outputStream.close();
inputStream.close();
socket.close();
}
}
}
``
原文地址: https://www.cveoy.top/t/topic/dSke 著作权归作者所有。请勿转载和采集!