• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java - aplikacja sieciowa klient - serwer. Problem przy wysyłaniu obiektu z drugiego klienta

Object Storage Arubacloud
–1 głos
788 wizyt
pytanie zadane 15 grudnia 2016 w Java przez Kamil Wielgosz Nowicjusz (200 p.)

Witam forumowiczów, mam problem z aplikacją klient - serwer.

Odpalam serwer, następnie odpalam clienta, łączę się poprawnie z serwerem i wysyła się obiekt funkcją writeObject(), serwer otrzymuje obiekt i jest wszystko ok. W przypadku kiedy uruchamiam kolejnego klienta i próbuję połączyć się z serwerem, połączenie zostaje nawiązane ale obiekt nie chce się wysłać i wyskakuję błąd: java.net.SocketException: Software caused connection abort: socket write error. 

wysyłanie w tym miejscu: 

ous.writeObject(new wyslij("obiekt1"));

 

serwer: 

package wordprojekt.server;

import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class ServerWord {

	public static void main(String[] args) {

		try {
			int i = 1;
			ServerSocket s = new ServerSocket(8185);

			while (true) {
				Socket incoming = s.accept();
				System.out.println("Spawing " + i);
				Runnable r = new ThreadedEchoHandler(incoming);
				Thread t = new Thread(r);
				t.start();
				i++;
			}

		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}

class ThreadedEchoHandler implements Runnable {

	private Socket incoming;

	public ThreadedEchoHandler(Socket i) {
		incoming = i;
	}

	@Override
	public void run() {
		try {
			try {

				InputStream inStream = incoming.getInputStream();
				OutputStream outStream = incoming.getOutputStream();

				//Scanner in = new Scanner(inStream);
				//PrintWriter out = new PrintWriter(outStream, true);

				wyslij noweA = null;

				ObjectInputStream ois = new ObjectInputStream(incoming.getInputStream());

				System.out.println(inStream.available());
				
            
				while (inStream.available() != 0) {
					noweA = (wyslij) ois.readObject();
					System.out.println(noweA);

				}
				System.out.println(inStream.available());

							
				inStream.close();
				ois.close();
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
			} finally {
				 
				incoming.close();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}

 

 

Client:

package wordprojekt.server;


import java.io.InputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Serializable;
import java.net.*;
import java.util.Scanner;



public class ClientTest {
	public static void main(String args[]) {


			try {
				Socket socket = new Socket("localhost", 8185);



				
				InputStream inStream = socket.getInputStream();
				OutputStream outStream = socket.getOutputStream();
				
				Scanner in = new Scanner(inStream);
				PrintWriter outt = new PrintWriter(outStream, true);



               /*  for(int i = 0; i < 10; i++){
					outt.println("wyslany" + i);
					System.out.println(in.nextLine());
                 }
*/
 				ObjectOutputStream ous = new ObjectOutputStream(socket.getOutputStream());
				System.out.println("Client uruchomiony: ");
				

		
 				ous.writeObject(new wyslij("obiekt1"));
				ous.writeObject(new wyslij("obiekt2"));

			
                ous.close();
				socket.close();
				System.out.println("Client zamkniety: ");
			} catch (Exception e) {
				System.err.println(e);
			}
		
	}
}




class wyslij implements Serializable{
/**
	 * 
	 */
	private static final long serialVersionUID = -1590808355799495667L;
    String name;
	public wyslij(String name) {
	super();
	this.name = name;
}
	@Override
	public String toString() {
		return "A [" + name + "]";
	}
	
}

 

1 odpowiedź

0 głosów
odpowiedź 16 grudnia 2016 przez ShiroUmizake Nałogowiec (46,300 p.)
Spróbuj złapać exception(poszukaj w doc , który to jest ) i wywal printStackTrace. Bo z tego to narazie nikt nie wynika.

 

Rozumiem, że testowałeś integralność?

Podobne pytania

0 głosów
1 odpowiedź 210 wizyt
pytanie zadane 26 marca 2017 w C# przez timrh Mądrala (6,030 p.)
0 głosów
1 odpowiedź 438 wizyt
pytanie zadane 11 czerwca 2022 w Java przez romilus Nowicjusz (120 p.)
+1 głos
1 odpowiedź 688 wizyt
pytanie zadane 7 stycznia 2018 w C i C++ przez Kapi2222 Obywatel (1,220 p.)

92,568 zapytań

141,422 odpowiedzi

319,642 komentarzy

61,957 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...