Java Datei Transferdatei zum Server

Ich bin neu in der Java-Vernetzung und habe seit einiger Zeit nach einer Lösung für mein Problem gesucht. Ich habe mir überlegt, warum ich nicht einen Rat von einigen qualifizierten Personen in dieser Angelegenheit einholen soll.

erzeit habe ich ein kleines Tool erstellt, das einen meiner Server verwaltet, sowie ein weiteres kleines Client-Tool. Mein Ziel ist es, dass das Tool Befehle vom Client an den Server senden kann. Auf diese Weise kann ich bestimmte Aktionen auf dem Servercomputer von einem anderen Computer aus ausführen, z. B. das Senden eines ZIP-Archivs mit aktualisierten Dateien.

Ich habe die Grundeinstellungen: Eine TCP-Verbindung, die einen Befehl vom Client zum Server sendet (der Server antwortet mit einer Bestätigung), und dann möchte ich, dass die angebliche Aktion ausgeführt wird. Meine Frage lautet jetzt:

Wenn ich eine Datei (.zip) vom Client zum Server sende, sollte ich sie über TCP senden oder so etwas wie FTP verwenden? Ich möchte nicht nur die Datei an den Server senden, sondern auch, wenn sie angekommen ist, die vorhandenen Dateien extrahieren und ersetzen.

Mit freundlichen Grüßen, Alex

EDIT: Dies ist das, was ich zum Übertragen einer Datei vom Client zum Server verwendet habe, jedoch erreicht die Datei das Ziel nicht in voller Größe. D:

Serve

package server.control.net.impl;

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 Update implements Runnable {

    private final static int serverPort = 5555;
    private final static String fileInput = "C:\\Users\\Alexander\\Documents\\update.zip";

    public static void main(String args[]) throws IOException{
        ServerSocket servsock = new ServerSocket(serverPort);
        File myFile = new File(fileInput);
        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();
        }
    }

    public static void start(){
        Update upd = new Update();  
        Thread tupd = new Thread(upd);  
        tupd.start(); 
    }

    @Override
    public void run() {

    }
}

Klien

package server.control.net;

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

public class TCPClient {

    private final static String serverIP = "127.0.0.1";
    private final static int serverPort = 5555;
    private final static String fileOutput = "C:\\Users\\Alexander\\Documents\\updateoutput.zip";

    public static void main(String args[]) throws UnknownHostException, IOException {
        Socket sock = new Socket(serverIP, serverPort);
        byte[] mybytearray = new byte[1024];
        InputStream is = sock.getInputStream();
        FileOutputStream fos = new FileOutputStream(fileOutput);
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        int bytesRead = is.read(mybytearray, 0, mybytearray.length);
        bos.write(mybytearray, 0, bytesRead);
        bos.close();
        sock.close();
    }
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage