package p7.uploadpic;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import .Socket;
import .UnknownHostException;

public class UploadPicClient {

	

	public static void main(String[] args) throws UnknownHostException, IOException {
		//1 创建客户端socket
		Socket s=new Socket("10.194.43.59",10006);
		
		//2 读取客户端要上传的图片文件 
		FileInputStream fis=new FileInputStream("D:\\3.png");
		
		//3 获取socket输出流 将读到的图片数据发送给服务端
		OutputStream out=s.getOutputStream();
		
		byte[]buf=new byte[1024];
		int len=0;
		while((len=fis.read(buf))!=-1) {
			out.write(buf,0,len);
		}
		
		//告诉服务端说:这边的数据发送完毕 让服务端停止读取
		s.shutdownOutput();
		
		//读取服务端发回的内容。
		InputStream in=s.getInputStream();
		byte[]bufIn=new byte[1024];
		
		int lenIn=in.read(bufIn);
		String text=new String(bufIn, 0, lenIn);
		System.out.println(text);
		
		fis.close();
		s.close();
	}

}


package p7.uploadpic;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import .ServerSocket;
import .Socket;

import p6.uploadtext.UploadClient;

public class UploadPicServer {

	public static void main(String[] args) throws IOException {
		//创建tcp的socket服务端
		
		ServerSocket ss=new ServerSocket(10006);
		
		
		//获取客户端。
	while(true) {
		Socket s=ss.accept();
		
		new Thread(new UploadTask(s)).start();
		//oldMethod(s);
	
	}
	}

	private static void oldMethod(Socket s) throws IOException, FileNotFoundException {
		String ip=s.getInetAddress().getHostAddress();
		System.out.println(ip+"....connected");
		
		//读取客户端发来的数据
		InputStream in=s.getInputStream();
		
		//将读取到的数据存储到一个文件中
		
		File dir=new File("d:\\pic");
		if(!dir.exists())
			dir.mkdirs();
		File file=new File(dir,ip+".png");
		FileOutputStream fos=new FileOutputStream(file);	
		
		byte[]buf=new byte[1024];
		int len=0;
		while((len=in.read(buf))!=-1) {
			fos.write(buf, 0, len);
		}
		
		//获取socket输出流 将上传成功字样发给客户端
		OutputStream out=s.getOutputStream();
		out.write("上传成功".getBytes());
	}

}




package p7.uploadpic;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import .Socket;
import java.util.concurrent.CountDownLatch;

public class UploadTask implements Runnable {
	public int count=0;
	private Socket s;
	public UploadTask(Socket s) {
		this.s=s;
	}
	
	@Override
	public void run() {
		String ip=s.getInetAddress().getHostAddress();
		System.out.println(ip+"....connected");
		try {
		//读取客户端发来的数据
		InputStream in=s.getInputStream();
		
		//将读取到的数据存储到一个文件中
		
		File dir=new File("d:\\pic");
		if(!dir.exists())
			dir.mkdirs();
		File file=new File(dir,ip+".png");
		if(file.exists()) {
			file=new File(dir,ip+"+("+(count++)+")"+".png");
		}
		
		FileOutputStream fos=new FileOutputStream(file);
		
		byte[]buf=new byte[1024];
		int len=0;
		while((len=in.read(buf))!=-1) {
			fos.write(buf, 0, len);
		}
		
		//获取socket输出流 将上传成功字样发给客户端
		OutputStream out=s.getOutputStream();
		out.write("上传成功".getBytes());
		s.close();
		fos.close();
		}catch (Exception e) {
			
		}
		
		}

}