//这是一个简单的测试程序 ,直接用输出流写就是了 
import java.io.*;
import java.net.*; class server{
public static void main(String []argv) throws Exception{
ServerSocket servsock=new ServerSocket(4444);
System.out.println("服务器启动!");
Socket sock;
    sock=servsock.accept();
    InputStream is=sock.getInputStream();
    OutputStream os=sock.getOutputStream();
    BufferedReader br=new BufferedReader(new InputStreamReader(is));
    PrintWriter pw=new PrintWriter(os);
    String line;
    while(true){
     line=br.readLine();
     if(line.equals("exit")){
     pw.println("服务器结束,程序退出");
     pw.flush();
     pw.close();
     br.close();
     sock.close();
     servsock.close();
     break;
     }
     else{
     line="C:\\Downloads\\"+line;
     System.out.println("您输入的文件名是:"+line);
     byte[] buf=new byte[512];
     //pw.println(line);
     //pw.flush();
     File f=new File(line);
     FileInputStream fis=new FileInputStream(f);
     while(fis.read(buf)!=-1){
     os.write(buf);
    
     }
     System.out.println("文件传输完成");     
     }
    
     }//end while

 }//main
}

解决方案 »

  1.   

    你可以自己写一个协议规定client和server端的握手规约,例如当我在client端登陆后通过服务器认证,然后你可以在协议中规定当client端想server端发送一个路径后,有server端判断是否存在和是否为空,然后在把路径下的文件名作为一个数组或其他什么发送给client端,由client端自己选择需要的文件,然后把文件名发送给server端,由server端发送文件的大小,和整个文件,这是正常的数据传输过程,你也可以把server端作为一个windows服务,让它在后台自动运行而不为别人所知,然后你通过自己定义的通讯协议,来操作服务器,这就是所谓的简单木马了,哈哈
      

  2.   

    1、那你必须先在unix机器上运行你写的服务程序,这个服务程序用来接受你的客户端发来的命令(在这里可以是,你想得到的文件名),服务程序从unix上得到指定文件再发回给你的客户端。所以你必须先知道对方的ip地址。因为是通过socket连你自己的服务程序,不用用户名和密码。
    2、可以用java里有关ftp的类。可能要简单些。
    3、如果你想做黑客,必须先熟悉tcp/ip结构,如何做我也不知道。
      

  3.   

    这需要服务端有这样的服务。你自己在服务器端写一个ServerSocket来监听然后在客户端写一个Socket就可以去取了。