SocketException - Socket is closed

SocketException - Socket is closed
DJ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
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"

Kopiuj
 
                                                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.

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

Po czym poznajesz, że nie wysyła?

DJ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
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:

Kopiuj
        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();




Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.