2012-05-23 108 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

發件人可以與文件的長度前綴的每一個文件的數據。當一個文件結束並且下一個文件開始時,這將使接收器能夠解決問題。

相關問題