Java网络编程多线程改进上传文件
2018-04-11 22:39
585 查看
Java网络编程多线程改进上传文件
服务器的代码用线程进行封装(多线程),这样可以模拟一个同时接收多人上传文件的服务器。
(用循环也可以但是效率低,是单线程的程序)
/*
* 通过while循环可以改进一个服务器接收多个客户端。
* 但是这个是有问题的。
*
* 如果是以下这种情况:假设我还有张三,李四,王五这三个人分别执行客户端
* 文件大小 网速
* 张三:好好学习.avi(100M) 256k
* 李四:天天向上.mp3(3M) 1M
* 王五:ILoveJava.txt(1k) 100M
*
* 因为服务器端是阻塞式接收的。只有等某一个人上传文件完后才继续执行程序。效率低。
*
* 如何解决呢?
* 给每一个用户分别开启一个线程。
*
*/
示例代码如下:
服务器的代码用线程进行封装(多线程)
服务器的代码用线程进行封装(多线程),这样可以模拟一个同时接收多人上传文件的服务器。
(用循环也可以但是效率低,是单线程的程序)
/*
* 通过while循环可以改进一个服务器接收多个客户端。
* 但是这个是有问题的。
*
* 如果是以下这种情况:假设我还有张三,李四,王五这三个人分别执行客户端
* 文件大小 网速
* 张三:好好学习.avi(100M) 256k
* 李四:天天向上.mp3(3M) 1M
* 王五:ILoveJava.txt(1k) 100M
*
* 因为服务器端是阻塞式接收的。只有等某一个人上传文件完后才继续执行程序。效率低。
*
* 如何解决呢?
* 给每一个用户分别开启一个线程。
*
*/
示例代码如下:
package cn.itcast_15; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.Socket; public class UserThread implements Runnable { private Socket s; public UserThread(Socket s) { this.s = s; } @Override public void run() { try { // 封装通道内的流对象 BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); // 封装文本文件对象 // BufferedWriter bw = new BufferedWriter(new FileWriter("src//cn//itcast_15//Copy.java")); // 为了防止名称冲突(即为了防止所有文件的名字都一样) String newName = System.currentTimeMillis() + ".txt"; BufferedWriter bw = new BufferedWriter(new FileWriter("src//cn//itcast_15//" + newName)); // 如果在某一时间点,同时有很多人访问服务器,相同名字的文件也会出现很多,肿么办? 答:再加循环判断,一旦某个名字存在,就重新赋值另一名字即可。 String line = null; while ((line = br.readLine()) != null) { // 阻塞 bw.write(line); bw.newLine(); bw.flush(); } // 给出反馈 BufferedWriter bwServer = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); bwServer.write("文件上传成功"); bwServer.newLine(); bwServer.flush(); // 释放资源 bw.close(); s.close(); } catch (IOException e) { e.printStackTrace(); } } }
服务器的代码用线程进行封装(多线程)
相关文章推荐
- java网络编程和io,多线程结合完成文件上传和下载案例
- 网络编程_多线程改进多个客户端上传文件案例
- Java基础知识强化之网络编程笔记14:TCP之多个客户端上传到一个服务器的思考(多线程改进)
- java 网络编程之TCP通信和简单的文件上传功能
- Java网络编程实践和总结 --- 基于TCP的Socket编程之实现文件上传和下载服务
- java网络编程(下)上传文件
- java 网络编程之TCP通信和简单的文件上传功能实例
- 网络编程 UDP通信的过程 TCP通信过程 多线程文件上传
- java网络编程____httpURLConnection上传下载文件
- Java网络编程之单线程下载文件---多线程下载单个文件
- Java网络编程Demo(二)TCP文件上传
- 赵雅智_java 网络编程(3)之上传文件和图片
- java网络编程--socket上传文件
- JAVA_ 网络编程,写一个可以上传文件的服务器和客户端
- Java基础知识强化之网络编程笔记12:TCP之TCP协议上传文本文件并给出反馈
- Java网络编程之TCP协议下—上传文件到服务器程序
- Java网络编程--TCP文件上传、图片上传示例
- Java网络编程,上传文件
- java TCP多线程编程单机的文件上传
- Android网络编程之Socket方式上传对象序列化文件(服务器端)