Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania bez odpowiedzi
Viewing all articles
Browse latest Browse all 21942

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

$
0
0

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 + "]";
	}
	
}

 


Viewing all articles
Browse latest Browse all 21942