2017-02-24 7 views
-1

グループチャット用のJavaコードがあります。サーバーに接続しているすべてのクライアントにファイルを送信したい。チャットの仕組みにPrintWriterを使用している場合、ファイル転送にはOutputStreamのようなものが必要ですか?ファイルを転送する他の方法はありますか?私たちは両方を使うことができますか?グループチャットにファイル転送を追加するにはどうすればよいですか?

+0

追加情報が必要です。サーバー側で何らかのサービスを実行していますか?それが休憩サービスの場合、Base64でファイルをエンコードしてサーバーに送信できますか?あなたのプログラムにソケットを使用していますか? – Ali

+0

@Ali-私のプログラムでソケットを使用しています。サーバーはマルチスレッドであり、クライアントごとにスレッドを作成します。私はここからOutputStreamを取得します:public ClientHandler(Socket clientSocket、PrintWriter user) { sock = clientSocket; InputStreamReader isReader =新しいInputStreamReader(sock.getInputStream()); reader =新しいBufferedReader(isReader); OutputStream os = sock.getOutputStream(); cOutputStreams.add(os); OutputStreamを使用してサーバーから.pdfファイルを転送する場合でも、クライアント側には0KBのファイルしか届かないため、問題が発生しています。 – NewToJava

+0

私は個人的には、グループチャットアプリケーションでInputStream/OutputStreamを使用しません。どのファイルが送信されているか、そのタイプ、および受信者が誰であるべきかを指定する必要があります。メッセージの送受信を処理する休憩サービスを作成する必要があります。 Reader/WriterやInputStream/OutputStreamを使用するかどうかは心配する必要はありません。 – Ali

答えて

0

Reader/Writerクラスは、文字とともに使用されます。 InputStream/OutputStreamはバイトとともに使用されます。ファイルのタイプに応じて、WriterまたはOutputStreamのいずれかを使用する必要があります。テキストファイルを送受信する場合は、Reader/Writerを使用してください。イメージ、zipファイル、pdfs(バイナリファイル)を送受信する場合は、InputStream/OutputStreamを使用します。

さまざまなタイプのReader/WriterとInputStream/OutputStreamについては、java.ioパッケージのクラスをチェックして、どちらがニーズに適しているかを確認してください。

+0

- 私はそれらの両方を使用するのが可能でしょうか?私は他を使用するために1つを閉じる必要がありますか? – NewToJava

関連する問題