编写客户端程序, 客户端上传.txt文件(需要对文件类型进行判断), 服务器端用于接收文件(采用多线程), 文件上传成功, 服务端给客户端一个反馈: 文件上传成功.
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class UpServer {
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(13770);
while (true) {
Socket s = ss.accept();
new Thread(() -> {
try {
BufferedInputStream bis = new BufferedInputStream(s.getInputStream());
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(System.currentTimeMillis() + ".txt"));
byte[] bys = new byte[1024 * 8];
int len ;
while ((len= bis.read(bys)) != -1) {
bos.write(bys, 0, len);
bos.flush();
}
BufferedWriter bwServer = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
bwServer.write("文件上传成功");
bwServer.flush();
bos.close();
bis.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (s != null) {
try {
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}).start();
}
}
}
public class UpClient {
public static void main(String[] args) {
Socket s = null;
BufferedInputStream bis = null;
try {
s = new Socket("127.0.0.1",13770);
File file = new File("jianda\\People.txt");
if (!file.exists() || !file.isFile() || !file.getName().endsWith("txt")){
System.out.println("文件路径不对");
return;
}
bis = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream bos = new BufferedOutputStream(s.getOutputStream());
byte[] bys = new byte[1024 * 8];
int len;
while ((len = bis.read(bys)) != -1) {
bos.write(bys,0,bys.length);
bos.flush();
}
s.shutdownOutput();
BufferedReader brClient = new BufferedReader(new InputStreamReader(s.getInputStream()));
String data = brClient.readLine();
System.out.println("服务器端反馈: " + data);
brClient.close();
}catch (IOException e1){
e1.printStackTrace();
}
}
}