//客户端
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class ClientDemo111 {
public static void main(String[] args) throws Exception, IOException {
File file = getFile();
Socket s =new Socket("192.168.1.103",7878);
BufferedReader br =new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintStream ps = new PrintStream(s.getOutputStream());
ps.println(file.getName());
String lineString = br.readLine();
if(lineString.equals("存在")){
System.out.println("文件已存在,请不要重复上传");
s.close();
return;
}
FileInputStream fis = new FileInputStream(file);
int len;
byte[] arr =new byte[1024];
while((len =fis.read(arr))!=-1){
ps.write(arr, 0, len);
}
fis.close();
s.close();
}
private static File getFile() {
System.out.println("请输入一个文件路径:");
Scanner sc = new Scanner(System.in);
while (true) {
String line = sc.nextLine();
File file = new File(line);
if (!file.exists()) {
System.out.println("你输入的文件不存在,重新输入");
} else if (file.isDirectory()) {
System.err.println("你输入的是文件路径,请重新输入");
} else {
sc.close();
return file;
}
}
}
}
//服务器端
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
public class ServerDemo222 {
public static void main(String[] args) throws Exception {
System.err.println("服务器已启动,绑定7878端口");
ServerSocket serverSocket = new ServerSocket(7878);
final File dir = new File("upload");
dir.mkdir();
while (true) {
final Socket socket = serverSocket.accept();
new Thread() {
public void run() {
try {
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(
new InputStreamReader(is));
PrintStream ps = new PrintStream(
socket.getOutputStream());
String name = br.readLine();
File file = new File(dir, name);
if (file.exists()) {
ps.println("存在");
socket.close();
return;
} else {
ps.println("不存在");
}
String ip = socket.getInetAddress().getHostAddress();
System.out.println(ip + "开始上传" + name + "文件");
long start = System.currentTimeMillis();
FileOutputStream fos;
fos = new FileOutputStream(file);
int len;
byte[] arr = new byte[1024];
while ((len = is.read(arr)) != -1) {
fos.write(arr, 0, len);
}
// fos.close();
// socket.close();
long end = System.currentTimeMillis();
System.out.println("文件上传结束:耗时" + (start - end) + "毫秒");
fos.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
}
}