java socket 使用 多线程下载请求
2016-03-15 16:40
375 查看
<pre name="code" class="java">import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; //服务端源码 异步处理客户请求 public class Server { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub ServerSocket serverSocket=new ServerSocket(8988); while(true){ Socket socket=serverSocket.accept(); Thread thread=new Thread(new Server.SendFile(socket)); thread.start(); } } static class SendFile implements Runnable{ private Socket socket; public SendFile(Socket socket){ this.socket=socket; } @Override public void run() { // TODO Auto-generated method stub try { FileInputStream fileInputStream=new FileInputStream(new File("G:\\迅雷下载\\[05美国动作片][Constantine.地狱神探][HR-HDTV][x264][双语字幕][YYeTs人人影视]\\Constantine.地狱神探.双语字幕.HR-HDTV.AC3.1024X576.x264-人人影视制作.mkv")); byte[] readUnit=new byte[1024]; OutputStream outputStream=socket.getOutputStream(); while(fileInputStream.read(readUnit)!=-1){ outputStream.write(readUnit); } fileInputStream.close(); outputStream.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.Socket; import java.net.UnknownHostException; //客户端源码 模拟多个客户下载请求操作 public class Client implements Runnable { private Socket socket; private int no; public Client(Socket socket,int no){ this.socket=socket; this.no=no; } @Override public void run() { // TODO Auto-generated method stub InputStream inputStream; try { System.out.println("No"+no); inputStream = socket.getInputStream(); byte[] unitData=new byte[1024]; FileOutputStream fileOutputStream=new FileOutputStream(new File("G:\\迅雷下载\\fan\\"+no+".mkv")); while(inputStream.read(unitData)!=-1){ fileOutputStream.write(unitData); }
<span style="white-space:pre"> </span>//需要关闭流
<span style="white-space:pre"> </span>inputStream.close();
<span style="white-space:pre"> </span>fileOutputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * @param args * @throws IOException * @throws UnknownHostException */ public static void main(String[] args) throws UnknownHostException, IOException { // TODO Auto-generated method stub for(int i=0;i<2;i++){ System.out.println("No."+i+" Thread"); Socket socket = new Socket("localhost",8988); Thread thread=new Thread(new Client(socket,i)); thread.start(); } } }
相关文章推荐
- Java转换为JSON首字母大写
- struts2+Hibernate实现用户登陆功能
- 应用jacob组件造成的内存溢出解决方案(java.lang.OutOfMemoryError: Java heap space)
- JAVA集合框架和集合
- Spring IOC容器基本原理
- Java 逻辑运算符
- Java Collection笔记之ArrayList
- java基础(一)
- Spring笔记--xml配置文件详解
- java中两个Integer类型的值相比较的问题
- Java 编码规范 StandardCharsets.UTF_8 三个方法 toString() name() displayName(),到底用哪个方法更合适?
- 【leetcode】【205】Isomorphic Strings
- java多线程
- springmvc demo
- java array 与补码
- Java并发编程:线程和进程的创建(转)
- Java编程之脚本语言的使用
- MyEclipse使用总结——在MyEclipse中设置jsp页面为默认utf-8编码
- spring配置笔记
- java导出数据库的全部表到excel