Java: Übertragung einer Datei vom server zum client und vom client zum server

Ich bin ein Neuling, und ich möchte erreichen Dateiübertragung vom server zum client "etwas tun" und dann senden Sie die Datei an den server zurück. Die meisten basic-code, den ich verwende, ist hier:

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();
  }
} 

Habe es von dieser website: http://www.java2s.com/Code/Java/Network-Protocol/TransferafileviaSocket.htm

Ich verstehe, wie dies funktioniert, aber ich weiß nicht, wie das senden einer Datei an den server zurück.
Bitte helfen Sie.

sockets sind bi-direktional. halten Sie es öffnen und Lesen der Antwort vom server.
Ich würde Ihnen empfehlen die Verwendung von HTTP und dein "server" ist ein einfaches servlet. Dann Lesen Sie einfach die Anfrage-und Antwort-die Antwort, die das servlet API macht den rest für Sie (und auf dem client die HTTPURLConnection oder andere HTTPClient-code).
so kann ich weglassen, die Socke.close() auf server und client und fügen Sie die reverse-Ketten, die schreiben und Lesen der Daten?
danke für die Empfehlung, aber glaubst du, es wäre möglich, dies zu lösen, ohne Verwendung von HTTP?
sicher, es ist. auf dem server öffnen Sie einfach ist = Buchse.getInputStream() und os = socket.getOutputStream(). Lesen, schreiben zu den anderen. ES ist nur, dass es eine Menge von zusätzlichen Dinge, die Sie brauchen, in der Produktion, um es zuverlässig.

InformationsquelleAutor meowtwo | 2014-11-25

Schreibe einen Kommentar