请各位大侠帮忙,想要实现在异地的两台PC(处于不同的局域网内)互相传输文件的程序,要求在一个机器上定时发文件,另一个机器上接收.请问如何实现?谢啦

解决方案 »

  1.   

    通过socket可以实现文件传输,只要彼此的机器在同一个子网下,
      

  2.   

    服务器端实现代码: import java.io.*; import java.net.*;   public class FileServer{        public static void main(String[] args)throws Exception{               //创建文件流用来读取文件中的数据               File file=new File("lishengjie.jpg");               FileInputStream fos=new FileInputStream(file);                              //创建网络服务器接受客户请求               ServerSocket ss=new ServerSocket(3108);               Socket client=ss.accept();                              //创建网络输出流并提供数据包装器               OutputStream netOut=client.getOutputStream();               OutputStream doc=new DataOutputStream(new BufferedOutputStream(netOut));                              //创建文件读取缓冲区               byte[] buf=new byte[2048];               int num=fos.read(buf);               while(num!=(-1)){//是否读完文件                      doc.write(buf,0,num);//把文件数据写出网络缓冲区                      doc.flush();//刷新缓冲区把数据写往客户端                      num=fos.read(buf);//继续从文件中读取数据               }               fos.close();               doc.close();        } }   客户方实现代码: import java.io.*; import java.net.*;   public class FileClient{        public static void main(String[] args)throws Exception{               //使用本地文件系统接受网络数据并存为新文件               File file=new File("newFile.jpg");               file.createNewFile();               RandomAccessFile raf=new RandomAccessFile(file,"rw");                              // 通过Socket连接文件服务器               Socket server=new Socket(InetAddress.getLocalHost(),3108);                              //创建网络接受流接受服务器文件数据                InputStream netIn=server.getInputStream();               InputStream in=new DataInputStream(new BufferedInputStream(netIn));                              //创建缓冲区缓冲网络数据               byte[] buf=new byte[2048];               int num=in.read(buf);                              while(num!=(-1)){//是否读完所有数据                      raf.write(buf,0,num);//将数据写往文件                      raf.skipBytes(num);//顺序写文件字节                      num=in.read(buf);//继续从网络中读取文件               }               in.close();               raf.close();        } }