JAVA_服務端多執行緒任務
阿新 • • 發佈:2018-11-09
服務端:
package cn.itcast.uploadeserverthreader.demo; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class ServerthreadDemo { public static void main(String[] args) throws IOException { ServerSocket ss=new ServerSocket(10069); while(true) { Socket s=ss.accept(); new Thread(new TaskDemo(s)).start(); } } }
執行緒任務:
package cn.itcast.uploadeserverthreader.demo; import java.io.BufferedInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.PrintStream; import java.net.Socket; public class TaskDemo implements Runnable { private Socket s; public TaskDemo(Socket s) { super(); this.s = s; } @Override public void run() { int count=0; System.out.println(s.getInetAddress().getHostAddress()+"connnected......."); try { BufferedInputStream burin=new BufferedInputStream(s.getInputStream()); File file=new File("serve.mp3"); //如果檔案不存在 if(!file.exists()) file.mkdirs(); //如果檔案存在 while(file.exists()) { file=new File("serve"+(count++)+".mp3"); } PrintStream ps=new PrintStream(new FileOutputStream(file),true); byte[]buff=new byte[1024]; int len=-1; while((len=burin.read(buff))!=-1) { ps.write(buff, 0, len); } PrintStream psout=new PrintStream(s.getOutputStream(),true); psout.println("上傳成功"); s.close(); ps.close(); } catch (Exception e) { // TODO: handle exception } } }