服务器端:
package server2;import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;public class Server { private int port=9999;
public static void main(String[] args) {
new Server().getServer(); }
public void getServer(){
String path=null;//文件路径
//File f=new File("e:\\"+path);
InputStreamReader in=null;
BufferedReader reader=null;
InputStream ins=null;
PrintWriter pw=null;
try {
ServerSocket ss=new ServerSocket(port);
while(true){
Socket s=ss.accept();
System.out.println("服务器---"+"请输入想要下载的文件名:");
in=new InputStreamReader(s.getInputStream());
reader=new BufferedReader(in);
path=reader.readLine();
File f=new File("e:\\"+path);
System.out.println(f.getPath());
if(f.exists()){
//定义缓冲区
byte []buff=new byte[1024];
//标记读取的位置
int n=0;
ins=new FileInputStream(f);
while((n=ins.read(buff))!=-1){
//ins.read(buff, 0, n);
String content=new String(buff, 0, n);
//写入到socket
pw=new PrintWriter(s.getOutputStream(), true);
pw.println(content); }

}else{
System.out.println("文件不存在");
}
}

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
ins.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
客户端:
package client2;import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;public class Client { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
Client c=new Client();
c.getClient();
} public void getClient(){
String pathname=null;
PrintWriter pw=null;
OutputStream outs=null;
InputStreamReader inr=null;
BufferedReader buffr=null; 
Scanner sc=new Scanner(System.in);
int m=0;
try {
Socket s=new Socket("127.0.0.1",9999);
pw=new PrintWriter(s.getOutputStream(),true);
//输入文件名
pathname=sc.next();
//向服务器发送文件名
pw.println(pathname);
//文件下载到d://
File f2=new File("d:\\"+pathname);
//操作服务器发来的文件
inr=new InputStreamReader(s.getInputStream());
buffr=new BufferedReader(inr);
byte []buff=new byte[1024];
buff=buffr.readLine().getBytes();
outs=new FileOutputStream(f2);
outs.write(buff);
System.out.println("客户端---"+"文件下载成功!");
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这几天看了看套接字想实现客户端从服务器下载文件 的功能,但对于多线程不是很明白,应该怎么用啊,求大神指导 !!(望详细点)