SocketException - Socket is closed

0

Witam.
Problem mam z Socket Exception, nie mam zielonego już pojęcia jak się go pozbyć.
"Exception in thread "main" java.net.SocketException: Socket is closed"

 
                                                File plik = fc.getSelectedFile();

						BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());//buforowanie strumienia bajtów

						FileInputStream fis = new FileInputStream(plik);//Tworzenie strumienia bajtowego WE	do pliku
						BufferedInputStream bis = new BufferedInputStream(fis);//buforowanie strumienia bajtów

						int k = 0;
						byte[] data = new byte[512];//tablica (paczka) na dane
						System.out.println("File is sending ");
						while((k=bis.read(data))!=-1) //buforowany odczyt danych ze strumienia WE(pliku)
						{
							bos.write(data,0,k);//buforowany zapis do strumienia WY
						}
							
						System.out.println("File has been sent");
						
						bis.close();
						bos.flush();
						bos.close();
 
                        br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		                    if(br.ready())

Oczywiście jak usunę bos.close to błędu nie ma, ale wtedy nic nie wysyła.

0

Po czym poznajesz, że nie wysyła?

0

Źle się wyraziłem, wysyłać może i wysyła tylko że gdy odbieram to w pliku kompletnie nic mi nie zapisuje. W przesyłaniu tekstu przy pomocy BufferedWriter dawałem flush() i nie musiałem zamykać strumienia. Tu natomiast przy BufferedOutputStream flush() kompletnie nie daje żadnych rezultatów.

Edit: A jednak wysyła, tylko że server nie nie przestaje pobierać.

Tak wygląda kod do odbioru na serwerze:

        File plik = new File("C:\\plik.txt");
		BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());//buforowanie strumienia bajtów
		FileOutputStream fos = new FileOutputStream(plik);//strumień plikowy WY pracujšcy na bajtach
		BufferedOutputStream bos = new BufferedOutputStream(fos);//buforowanie strumienia bajtów

		int k = 0;
		byte[] data = new byte[512];//tablica (paczka) na dane
		System.out.println("File is downloading...");
		while((k=bis.read(data))!=-1)//buforowany odczyt danych ze strumienia WE(gniazda) <<<<<<<<<<<<<<<<<<<Na tej linijce się wiesza
			bos.write(data,0,k);//bororowany zapis do pliku
		System.out.println("File downloaded");
		bis.close();
		bos.flush();




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