2017-02-24 3 views
-1

Ich habe einen Java-Code für Gruppen-Chat. Ich möchte eine Datei an alle Clients senden, die mit dem Server verbunden sind. Wenn ich eine PrintWriter für Chat-Mechanismus verwende, brauche ich andere Dinge wie OutputStream für die Dateiübertragung? Gibt es eine andere Methode zum Übertragen von Dateien? Können wir beide benutzen?Wie kann ich die Dateiübertragung zu einem Gruppenchat hinzufügen?

+0

Weitere Informationen sind erforderlich. Haben Sie irgendeine Art von Service auf der Serverseite? Wenn es sich um einen Rest-Service handelt, können Sie Base64 die Datei verschlüsseln und an den Server senden? Verwenden Sie Sockets für Ihr Programm? – Ali

+0

@Ali -Ja Ich verwende Sockets in meinem Programm. Server ist Multithread und erstellt einen Thread für jeden Client. Ich bekomme den OutputStream von hier: public ClientHandler (Socket clientSocket, PrintWriter-Benutzer) { sock = clientSocket; InputStreamReader isReader = neuer InputStreamReader (sock.getInputStream()); reader = new BufferedReader (isReader); OutputStream os = sock.getOutputStream(); cOutputStreams.add (os); Auch wenn ich OutputStream verwende, um eine PDF-Datei vom Server zu übertragen, habe ich Probleme, da nur 0KB-Datei auf der Clientseite ankommt. – NewToJava

+0

Ich persönlich würde InputStream/OutputStream nicht in einer Gruppen-Chat-Anwendung verwenden. Sie benötigen etwas, um anzugeben, welche Datei gesendet wird, welchen Typ sie hat und wer ihre Empfänger sein sollen. Es sollte ein Rest-Service erstellt werden, der das Senden und Empfangen von Nachrichten behandelt. Sie müssen sich keine Gedanken darüber machen, ob ein Reader/Writer oder InputStream/OutputStream verwendet werden soll. – Ali

Antwort

0

Die Reader/Writer-Klassen werden mit Zeichen verwendet. Der InputStream/OutputStream wird mit Bytes verwendet. Abhängig vom Typ der Datei müssen Sie entweder einen Writer oder einen OutputStream verwenden. Wenn Sie Textdateien empfangen und senden, verwenden Sie Reader/Writer; Wenn Sie Bilder empfangen und senden, verwenden Sie ZIP-Dateien, PDF-Dateien (Binärdateien) mit InputStream/OutputStream.

Überprüfen Sie die Klassen im Paket java.io auf verschiedene Arten von Lese-/Schreibprogrammen und InputStream/OutputStream, um zu sehen, welche für Ihre Anforderungen geeignet sind.

+0

-Wenn ich beide verwenden soll, ist es möglich? Muss ich eine schließen, um andere zu benutzen? – NewToJava

Verwandte Themen