W swojej aplikcji wywołuje zapytanie do serwera na strumieniach. W rezultacie zapytania serwer ma wykonać wysłanie pliku. Robi to przez utworzenie klasy, której konstruktor pobiera socket, na którym zostało wykonane poprzednie zapytanie, a wewnątrz siebie definiuje dwa strumienie przez które zaczyna wysyłać bajty:
public Wyslij(Socket s, String fn){
this.socket = s;
this.fileName = fn;
try{
in = new BufferedInputStream(new FileInputStream("pliki\\"+ fileName));
out = new BufferedOutputStream(socket.getOutputStream());
}catch(IOException e){
System.err.println(e.getMessage());
}
start();
}
public void run(){
try{
Serwer.wyslij_bajty(in,out, 6);
}catch(IOException e){
System.err.println("Wyjątek 11111");
}
finally{
try{
if(in!=null)
in.close();
if(out!=null)
out.close();
}catch(IOException e2){
System.err.println("Wyjątek przy zamykaniu strumieni");
}
System.out.println("Strumienie zamknięte");
}
}
Sytuacja w kliencie jest analogicznie odwrotna(pod odbiór bajtów). Wewnątrz tych konstruktorów pojawia się jednak problem z inicjalizacją strumieni na sockecie. Pojawia się wyjątek socket is close. Nie rozumiem na czym polega tu błąd, przekazany socket wewnątrz tego konstruktora jak najbardziej nie ma wartości null, a mimo tego pojawia się komunikat o zamknęciu. Za pomoc dzięki z góry.