problem z przesylaniem jpga przez socket

0

witam,
mam prosta aplikacje do przesylania i wyswietlania plikow graficznych na
soketach problem polega na tym, ze klient odbiera pliki typu bmp,gif,png,
natomiast ma problemy z .jpg, tzn jpg zostaje odebrany dopiero po ponownym
wyslaniu rzadania, ale konczy sie to wyrzuceniem wyjatkow Socketa.
Strumienie sa resetowane po przeslaniu/odebraniu pliku, poniewaz ten sam
strumien sluzy do przesylania komend (String), a bez ponownej
inicjalizacji po prostu nie dziala.
Bardzo bylbym wdzieczny za sugestie co robie nie tak, albo jak to zrobic
inaczej. Kod odpowiedzialny za przesylanie:

serwer:
File tmp = new File(..);
DataInputStream fis = new DataInputStream(
new BufferedInputStream(
new FileInputStream(tmp)));
byte[] data = new byte[fis.available()];
fis.readFully(data);
fis.close();
output.write(data);
output.flush();
output = new DataOutputStream(new
BufferedOutputStream(s.getOutputStream()));

klient:

image = ImageIO.read(input);
//wyswietlanie pobranego obrazka
ImagePreview imgDialog = new ImagePreview(image, ..);
imgDialog.setVisible(true);
input = new DataInputStream(new BufferedInputStream(s.getInputStream()));

Pozdrawiam

0

Trudno powiedzieć w czym problem skoro pozostałe obrazki poprawnie sie przesyłają. Ja podobne rzeczy robiłem w taki sposób:
-> wysyłam stringa z poleceniem
<- zwracam stringa z oznajmieniem gotowości
-> wysyłam obiekt
<- odbieram obiekt
<-> zamykam streamy i sockety

Z każdym połączeniem tworzony jest nowy wątek który obsługuje żądanie.

  • wątek dostaje socketa
  • tworzone są odpowiednie streamy
  • operacje na streamach
  • zamykanie streamow

1 użytkowników online, w tym zalogowanych: 0, gości: 1