我是一個新手,我想完成從服務器到客戶端的「文件傳輸」,然後將文件發送回服務器。我使用的最基本的代碼是在這裏:Java:將文件從服務器傳輸到客戶端,從客戶端傳輸到服務器
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();
}
}
}
The client module
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();
}
}
得到它從網站:http://www.java2s.com/Code/Java/Network-Protocol/TransferafileviaSocket.htm
我理解它是如何工作的,但我不知道如何發送一個文件回服務器。 請幫忙。
插座是雙向的。保持打開並從服務器讀取回應。 – jtahlborn 2014-11-25 02:01:26
我建議你使用HTTP,你的「服務器」是一個簡單的servlet。然後,您只需讀取請求並回答響應,servlet API將爲您完成剩下的工作(並在客戶端上使用HTTPURLConnection或其他HTTPClient代碼)。 – eckes 2014-11-25 02:03:41
@jtahlborn所以,我應該省略服務器和客戶端上的sock.close(),然後添加寫入和讀取數據的反向鏈? – meowtwo 2014-11-25 02:06:00