Io流,多线程,网络编程的融合练习
2017-04-28 00:00
239 查看
摘要: 实现从客户端的东西传到服务端,同时从后台复制文件到指定目录
package doit; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.Timer; import java.util.TimerTask; //实现从客户端的东西传到服务端,同时从后台复制文件到指定目录 public class mainStart { static FileInputStream in = null; public static void main(String[] s) { File fin = new File("d:\\ThreadPrint.java"); File fout = new File("e:\\ThreadPrint.java"); FileD fd = new FileD(fin, fout); fd.writeCopy(); try { in = new FileInputStream(fin); } catch (FileNotFoundException e) { e.printStackTrace(); } // 服务端启动 new Thread(new Runnable() { public void run() { new ServerSocketD(9000).read(); } }).start(); // 客户端启动(体现一下延时的上传) new Timer().schedule(new TimerTask() { @Override public void run() { new SocketD("192.168.1.103", 9000, in).write(); } }, 1000); // new Thread(new Runnable() { // @Override // public void run() { // new SocketD("192.168.1.103", 9000, in).write();// 客户端启动 // } // }).start(); fd.closeInputStream(); fd.closeOutputStream(); } }
package doit; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; //文件操作类 public class FileD { BufferedOutputStream bo = null; BufferedInputStream bi = null; File in = null; FileD(File in, File out) { this.in = in; reset(); try { bo = new BufferedOutputStream(new FileOutputStream(out)); } catch (FileNotFoundException e) { e.printStackTrace(); } } // read public void read() { int len = 0; byte[] by = new byte[1024 * 9]; try { while ((len = bi.read(by)) != -1) { System.out.println(new String(by, 0, len)); } } catch (IOException e) { e.printStackTrace(); } reset(); } // write public void writeCopy() { reset(); int len = 0; byte[] by = new byte[1024 * 9]; try { while ((len = bi.read(by)) != -1) { bo.write(by, 0, len); bo.flush(); } } catch (IOException e) { e.printStackTrace(); } reset(); } // reset()重置bi输入流 public void reset() { try { bi = new BufferedInputStream(new FileInputStream(in)); } catch (FileNotFoundException e1) { e1.printStackTrace(); } } // 自定义关闭输入流 public void closeInputStream() { try { bi.close(); } catch (IOException e) { e.printStackTrace(); } } // 自定义关闭输出流 public void closeOutputStream() { try { bo.close(); } catch (IOException e) { e.printStackTrace(); } } }
package doit; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; //服务端类 public class ServerSocketD { ServerSocket ss = null; Socket s = null; ServerSocketD(int port) { try { ss = new ServerSocket(port); s = ss.accept(); } catch (IOException e) { e.printStackTrace(); } } // 数据来源 public void read() { InputStream in = null; try { in = s.getInputStream(); } catch (IOException e1) { e1.printStackTrace(); } while (true) { int len = 0; byte[] by = new byte[1024 * 9]; try { while ((len = in.read(by)) != -1) { System.out.println(new String(by, 0, len)); } } catch (IOException e) { e.printStackTrace(); } } } }
package doit; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; public class SocketD { Socket s = null; FileInputStream in = null; OutputStream out = null; public SocketD(String inet, int port, FileInputStream in) { try { s = new Socket(inet, port); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } this.in = in; } // public void write() { try { out = s.getOutputStream(); } catch (IOException e1) { e1.printStackTrace(); } int len = 0; byte[] by = new byte[1024 * 9]; try { while ((len = in.read(by)) != -1) { out.write(new String(by, 0, len).getBytes()); out.flush(); } } catch (IOException e) { e.printStackTrace(); } } }
相关文章推荐
- Rhyme/ java TCP网络编程 聊天室(群聊与私聊)TCP、多线程、IO流编程完整代码实现
- {网络编程}和{多线程}应用:基于UDP协议【实现多发送方发送数据到同一个接收者】--练习
- {网络编程}和{多线程}应用:基于TCP协议【实现多个客户端发送文件给一个服务器端】--练习
- Dave Python 练习十九 -- 网络客户端编程
- java网络编程之android多线程断点下载并提供下载进度(三)
- C#网络编程(二)------多线程socket实例
- 网络编程_多线程改进多个客户端上传文件案例
- 利用多线程与网络编程编写的实时聊天小程序
- 网络编程小练习
- Java的Socket网络编程以及多线程
- 《小白兔到大黑牛》第六篇结合IO流及网络编程下载图片
- 18天Java学习---Java的Socket网络编程以及多线程
- 苹果多线程网络编程之-GCD队列与任务的理解
- C#网络通信(2)--TCP编程和多线程
- 多线程和网络编程
- Python网络编程之多线程服务端
- Dave Python 练习十八 -- 网络编程
- java网络编程学习之——构建基于多线程的网络通信模型1
- C#网络编程(二)------多线程socket实例
- 网络编程——多线程与异步套接字编程(API) 学习