java TCP并发上传图片

2019-04-15 16:01发布

package com.net; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class PicServer { public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(10009); while (true) { Socket s = ss.accept(); new Thread(new PicThread(s)).start(); } // ss.close(); } } class PicThread implements Runnable { Socket s = null; public PicThread(Socket s) { super(); this.s = s; } @Override public void run() { int num = 0; try { InputStream in = s.getInputStream(); File file = new File(Thread.currentThread().getName()+".jpg"); while(file.exists()) file = new File(Thread.currentThread().getName()+"("+(num++)+")"+".jpg"); FileOutputStream fos = new FileOutputStream(file); byte[] buf = new byte[1024]; int len = 0; while ((len = in.read(buf)) != -1) { fos.write(buf, 0, len); } OutputStream os = s.getOutputStream(); os.write("上传成功".getBytes()); os.close(); s.close(); } catch(Exception e){ throw new RuntimeException("上传失败"); } } }
package com.net; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; public class PicClient { public static void main(String[] args) throws Exception { Socket s = new Socket("127.0.0.1",10009); FileInputStream fis = new FileInputStream("d:/nihao.jpg"); OutputStream out = s.getOutputStream(); int len; byte[] buf = new byte[1024]; while((len=fis.read(buf))!=-1) { out.write(buf, 0, len); } s.shutdownOutput(); InputStream in = s.getInputStream(); byte[] b = new byte[1024]; int num = in.read(b); System.out.println(new String(b,0,num)); fis.close(); s.close(); } }