このためにクライアントからサーバーに複数の画像ファイルを送信したいのですが、アプリケーションでコードを記述しますが、送信される画像は1つだけです。クライアントアプリケーションには1つのフレームがあり、サーバーアプリケーションにもサーバーを起動/停止するためのフレームがあります。
もう1つの問題は、クライアントアプリケーションが画像ファイルを送信し、次にこの画像ファイルがサーバーコンピューターに表示される場合ですが、この画像ファイルを開こうとすると何も表示されませんが、サーバーアプリケーション(サーバーフレーム)を閉じると、画像。
コード:
クライアントサイト:
public void sendPhotoToServer(String str){ // str is image location
try {
InputStream input = new FileInputStream(str);
byte[] buffer=new byte[1024];
int readData;
while((readData=input.read(buffer))!=-1){
dos.write(buffer,0,readData); // dos is DataOutputStream
}
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
}
サーバー側では、このコードはスレッドで実行されています。
public void run() {
while (true) {
try {
byte[] buffer = new byte[8192];
fis = new FileOutputStream("C:\\"+(s1++)+".jpg"); // fis is FileOutputStream
while ((count = in.read(buffer)) > 0){ //count is a integer and 'in' is InputStream
fis.write(buffer, 0, count);
fis.flush();
}
} catch (Exception e) {}
}
}
問題:
- クライアントから送信されたコピーは最初の画像のみです。
- この画像は、サーバーアプリケーションを閉じたときにのみ表示されます。
例外はなく、他のクラスのsendPhotoToServerメソッドを連続して呼び出して、すべての画像ファイルを次のように送信します。
if (photoSourcePath != null) {
clientClass.sendPhotoToServer(photoSourcePath+"\\"+rowData.get(5));
}