Test_Java_网络编程(模拟客户端向服务器上传文件)
2017-09-06 17:14
585 查看
需求:使用Java程序创建两个类,分别为UpdateClient和UpdateServer类来模拟客户端向服务器上传文件(因为没有服务器,只能本机传给自己)
提示输入要上传的文件路径,验证路径是否在以及是否是文件夹
发送文件名到服务器
建立多线程的服务器
读取文件名
判断文件是否存在,将结果发回客户端
定义FileOutputStream,从网络读取数据,存储到本地
Test2_UpdateClient.java
Test2_UpdateServer.java
提示输入要上传的文件路径,验证路径是否在以及是否是文件夹
发送文件名到服务器
建立多线程的服务器
读取文件名
判断文件是否存在,将结果发回客户端
定义FileOutputStream,从网络读取数据,存储到本地
Test2_UpdateClient.java
package com.soar.test; 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 Test2_UpdateClient { public static void main(String[] args) throws UnknownHostException, IOException { //1.提示输入要上传的文件路径,验证路径是否穿在以及是否是文件夹 File file = getFile(); //2.发送文件名到服务器 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(); //6.接收结果,如果存在给予提示,程序直接退出 String result = br.readLine(); //读取存在或者不存在的结果 if("服务器已经存在该文件".equals(result)){ System.out.println("您上传的文件已经存在,请不要重复上传"); socket.close(); return; } //7.如果不存在,定义FileInputStream读取文件,写出到网络 FileInputStream fis = new FileInputStream(file); byte[] arr = new byte[8192]; int len; while((len = fis.read(arr))!= -1){ ps.write(arr,0,len); } fis.close(); socket.close(); } private static File getFile() { Scanner sc = new Scanner(System.in); //创建键盘录入对象 System.out.println("请输入一个文件路径:"); while(true){ String line = sc.nextLine(); File file = new File(line); if(!file.exists()){ System.out.println("您录入的文件路径不存在"); }else if(file.isDirectory()){ System.out.println("您录入的是文件夹路径,请输入一个文件路径"); }else{ return file; } } } }
Test2_UpdateServer.java
package com.soar.test; 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 Test2_UpdateServer { public static void main(String[] args) throws IOException { //3.建立多线程的服务器 ServerSocket server = new ServerSocket(12345); System.out.println("服务器启动,绑定12345端口号"); //4.读取文件名 while(true){ final Socket socket = server.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 fileName = br.readLine(); //5.判断文件是否存在,将结果发回客户端 File dir = new File("update"); dir.mkdir(); //创建文件夹 File file = new File(dir,fileName); //封装成File对象 if(file.exists()){ //如果服务器已经存在这个文件 ps.println("存在"); //将存在写给客户端 socket.close(); //关闭socket return; }else{ ps.println("不存在"); } //8.定义FileOutputStream,从网络读取数据,存储到本地 FileOutputStream fos = new FileOutputStream(file); byte[] arr = new byte[8192]; int len; while((len = is.read(arr)) != -1){ fos.write(arr,0,len); } fos.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } }.start(); } } }
相关文章推荐
- Java学习日记8:文件上传工具类的实现和服务器给客户端发送图片
- 在C#客户端用HTTP上传文件到Java服务器
- 黑马程序员 【】java学习之路——TCP(三)客户端上传文件到服务器
- 在C#客户端用HTTP上传文件到Java服务器
- (Android)JavaSocket编程,文件上传到服务器,客户端Android,服务器端J2SE
- Java客户端上传图片(文件)到c++服务器
- java客户端模拟表单上传文件
- Java实现文件上传服务器和客户端
- java实现上传文件到服务器和客户端
- java客户端模拟表单上传文件
- Java客户端通过Http发送POST请求上传文件到web服务器
- 利用JAVA写一段上传文件程序(模拟Ftp客户端)
- JAVA_ 网络编程,写一个可以上传文件的服务器和客户端
- 在C#客户端用HTTP上传文件到Java服务器
- java代码模拟页面上传文件至服务器(支持https上传)
- Java实现文件上传服务器和客户端
- 在C#客户端用HTTP上传文件到Java服务器
- java客户端模拟表单上传文件
- 用Java模拟表单(或iPhone、Android客户端)上传文件
- Test_Java_网络编程(客户端向服务器发送字符串,服务器将字符串反转后发送给客户端)