使用socket模拟服务端与客户端传输文件


package netFile; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.Closeable; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.net.Socket; public class SocketTask { //客户端发送文件 public static void main(String[] args) { Socket socket = null; BufferedInputStream bis = null; BufferedOutputStream bos= null; try { socket = new Socket("127.0.0.1", 10086); bis = new BufferedInputStream(new FileInputStream("f:"+File.separator+"2.jpg")); bos = new BufferedOutputStream(socket.getOutputStream()); byte [] buffer = new byte[1024]; int len = 0; while((len = bis.read(buffer)) != -1){ bos.write(buffer, 0, len); bos.flush(); } socket.shutdownOutput(); System.out.println("客户端发送完成 !"); BufferedInputStream is = new BufferedInputStream(socket.getInputStream()); is.read(); } catch (IOException e) { e.printStackTrace(); }finally{ close(bis); close(bos); } } private static void close(Closeable close){ if(close != null){ try { close.close(); } catch (IOException e) { e.printStackTrace(); } } } }

  

package netFile;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.Closeable;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class SeverSocketTask {
	//服务端,接收文件
	public static void main(String[] args) {
		
	ServerSocket sc = null;
	BufferedInputStream bis = null; 
	BufferedOutputStream bos = null;
	try {
		sc = new ServerSocket(10086);
		Socket socket = sc.accept();
		bis = new BufferedInputStream(socket.getInputStream());
		bos = new BufferedOutputStream(new FileOutputStream("e:"+File.separator+"aa.jpg"));
		
		byte [] buffer = new byte[1024];
		int len = 0;
		while((len = bis.read(buffer)) != -1){
			bos.write(buffer, 0, len);
			bos.flush();
		}
		
		BufferedWriter writer = new 
				BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
		writer.write("服务端已收到消息!"); 
		writer.flush();
		socket.shutdownOutput();
	} catch (IOException e) {
		e.printStackTrace();
	}finally{			
		close(bos);
	}
}
private static void close(Closeable close) {
	if(close != null){
	try {
		close.close();
	} catch (IOException e) {
		e.printStackTrace();
	}
	}
}
}