2012-05-23 109 views
0

这段代码发送一个特定文件,如何使用套接字将文件从一个目录(服务器)发送到另一个目录(客户端)?请帮助。如何通过套接字传输一个文件的多个文件

服务器类

import java.io.BufferedInputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.io.OutputStream; 
import java.net.ServerSocket; 
import java.net.Socket; 

public class Main { 
    public static void main(String[] args) throws IOException { 
    ServerSocket servsock = new ServerSocket(123456); 
    File myFile = new File("s.pdf"); 
    while (true) { 
     Socket sock = servsock.accept(); 
     byte[] mybytearray = new byte[(int) myFile.length()]; 
     BufferedInputStream bis = new BufferedInputStream(new FileInputStream(myFile)); 
     bis.read(mybytearray, 0, mybytearray.length); 
     OutputStream os = sock.getOutputStream(); 
     os.write(mybytearray, 0, mybytearray.length); 
     os.flush(); 
     sock.close(); 
    } 
    } 
} 

客户端类

import java.io.BufferedOutputStream; 
import java.io.FileOutputStream; 
import java.io.InputStream; 
import java.net.Socket; 

public class Main { 
    public static void main(String[] argv) throws Exception { 
    Socket sock = new Socket("127.0.0.1", 123456); 
    byte[] mybytearray = new byte[1024]; 
    InputStream is = sock.getInputStream(); 
    FileOutputStream fos = new FileOutputStream("s.pdf"); 
    BufferedOutputStream bos = new BufferedOutputStream(fos); 
    int bytesRead = is.read(mybytearray, 0, mybytearray.length); 
    bos.write(mybytearray, 0, bytesRead); 
    bos.close(); 
    sock.close(); 
    } 
} 
+0

在客户端上进行打包/压缩,通过单个文件发送,然后在服务器上解压缩/解压缩。 – dasblinkenlight

回答

2

发件人可以与文件的长度前缀的每一个文件的数据。当一个文件结束并且下一个文件开始时,这将使接收器能够解决问题。

相关问题