Socket exception

Fermé
helloworld - 24 déc. 2018 à 21:57
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 27 déc. 2018 à 18:19
Bonjour,

J'ai l'exception suivante : java.net.SocketException: Socket closed

Je ne comprend pas pourquoi.. dans mon code je n'ai même pas fermer le socket.

Le server s'execute correcetement et au moment ou je connecte le client l'execption est levé.

Serveur

		try (ServerSocket serverSocket = new ServerSocket(12341)) {

			while (true) {
				Socket clientSocket = serverSocket.accept();
				System.out.println("New client connected");
				ServerThread thread = new ServerThread(clientSocket); // extends thread
				thread.start();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}


Client

		try (Socket socket = new Socket("localhost", 12341)) {

			ClientThread thread = new ClientThread(socket); //extends thread
			thread.start();
			thread.send("Bonjour");

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




Configuration: Windows / Chrome 71.0.3578.98

1 réponse

Petite précision l'exception est toujours levé dans mon thread gérant le coté client

	public void run() {
		try {
			String message = null;
			if (in.readObject() != null) { //exception ici
				message = (String) in.readObject();
				System.out.println(message);
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
25 déc. 2018 à 16:19
Bonjour,

Le close est automatique à la fin d'un try-with-resources (c'est d'ailleurs le seul intérêt de cette écriture).

Dans quel ordre tu démarres tes programmes ?
Il faut que le serveur fonctionne avant que les clients se connectent sinon le programme client va planter.
0
Je démarre le serveur avant le client, par contre quand je mais dans l'envoie du message dans une methode à part
void send(String message)
alors cela fonctionne, je ne comprend pas pourquoi.

C'est comme si la ressource ce fermait avant l'envoye du message dans la méthode run? C'est possible ?

		try (Socket socket = new Socket("localhost", 12343)){
			ClientThread thread = new ClientThread(socket); //extends thread
			thread.start();
			thread.send("salut");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
0