原创文章,转载须标明出处

一个简单的文件传输程序,客户端可通过文件选择器选择文件,服务端用来接受文件,接受文件的路径是写死的。

(1)server:

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class server {

	public static void main(String[] args) throws IOException {
		
		ServerSocket server = new ServerSocket(9999);
		Socket socket = server.accept();
System.out.println("已连接上客户端,请选择要发送的文件:");

		DataInputStream name = new DataInputStream(socket.getInputStream());
		//接受文件
		byte[] bs  = new byte[1024];
		FileOutputStream fileout = new FileOutputStream(new File("C:\\接受文件\\"+name.readUTF()));
		int len;
		while( -1 != (len = name.read(bs)) ) {
			fileout.write(bs,0,len);//往硬盘里面写
			fileout.flush();
		}

		//关闭
		name.close();
		fileout.close();
		socket.close();
		server.close();
	}
}

(2)client:

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JFileChooser;

public class client {

	public static void main(String[] args) throws UnknownHostException, IOException {
		
		Socket socket = new Socket("127.0.0.1",9999);
				
		DataOutputStream name = new DataOutputStream(socket.getOutputStream());				
		//准备要发送的文件
		JFileChooser chooser = new JFileChooser();
		//chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
		chooser.showOpenDialog(null);
		String path = chooser.getSelectedFile().getPath();
		//System.out.println(path);
		File file = new File(path);
		name.writeUTF(file.getName());
		InputStream filein = new FileInputStream(file);
		byte[] fileBytes = new byte[1024];
		int len = 0;
		while(-1 != (len = filein.read(fileBytes))) {
			name.write(fileBytes,0,len);
			name.flush();
			
		}
		System.out.println("发送完成!");
		//关闭
		filein.close();
		name.close();
		socket.close();
	

	}
}