• 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

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
–1 głos
903 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ź 356 wizyt
pytanie zadane 26 marca 2017 w C# przez timrh Mądrala (6,010 p.)
0 głosów
1 odpowiedź 607 wizyt
pytanie zadane 11 czerwca 2022 w Java przez romilus Nowicjusz (120 p.)
+1 głos
1 odpowiedź 798 wizyt
pytanie zadane 7 stycznia 2018 w C i C++ przez Kapi2222 Obywatel (1,220 p.)

93,164 zapytań

142,176 odpowiedzi

321,933 komentarzy

62,491 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 688p. - dia-Chann
  2. 676p. - CC PL
  3. 675p. - Łukasz Piwowar
  4. 662p. - Łukasz Eckert
  5. 649p. - Michal Drewniak
  6. 641p. - rucin93
  7. 621p. - Dawid128
  8. 572p. - ssynowiec
  9. 521p. - Piotr Aleksandrowicz
  10. 498p. - Michał Telesz
  11. 490p. - Hubert Chęciński
  12. 457p. - Marcin Putra
  13. 437p. - nidomika
  14. 432p. - rafalszastok
  15. 427p. - Adrian Wieprzkowicz
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...