黑马程序员技术交流社区
标题:
【黑马程序员】网络编程(练习)客户端向服务器上传文件
[打印本页]
作者:
huburt
时间:
2016-5-23 14:26
标题:
【黑马程序员】网络编程(练习)客户端向服务器上传文件
服务端:
import java.io.BufferedReader;
import java.io.File;
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;
public class Server {
public static void main(String[] args) throws IOException {
//创建服务器
ServerSocket server = new ServerSocket(12345);
//创建服务器的数据存储空间
File dir = new File("data");
dir.mkdir();
//多线程接收连接
while(true){
final Socket socket = server.accept();
System.out.println("连接");
new Thread(){
public void run() {
try {
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
PrintStream ps = new PrintStream(socket.getOutputStream());
//接收文件名
File file = new File(dir,br.readLine());
//判断并反馈客户端
if(file.exists()){
ps.println("1");
}else{//文件不存在,则储存
ps.println("0");
FileOutputStream fos = new FileOutputStream(file);
byte[] b = new byte[1024*4];
int len;
while((len=is.read(b))!=-1){
fos.write(b, 0, len);
}
fos.close();
}
//关闭socket,会自动关闭IO流
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
};
}.start();
}
}
}
复制代码
顾客端:
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.util.Scanner;
public class Client {
public static void main(String[] args) throws IOException{
Scanner sc = new Scanner(System.in);
File file;
//键盘接一个路径,判断是否是文件
System.out.println("请输入要上传的文件路径:");
while(true){
file = new File(sc.nextLine());
if(file.exists()){
if(file.isFile()){
break;
}else{
System.out.println("这是一个文件夹路径,请重新输入一个文件路径:");
}
}else{
System.out.println("输入的文件不存在!请重新输入:");
}
}
//发起连接
Socket socket = new Socket("127.0.0.1", 12345);
//打开输入输出流
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintStream ps = new PrintStream(socket.getOutputStream());
//发送服务器
ps.println(file.getName());
//接收返回值
String reponse = br.readLine();
if(reponse.equals("1")){
System.out.println("文件已存在于服务器!");
}else{//文件不存在,则上传
FileInputStream fis = new FileInputStream(file);
byte[] b = new byte[1024*4];
int len;
while((len=fis.read(b))!=-1){
ps.write(b, 0, len);
}
fis.close();
}
//关闭连接
socket.close();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2