CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Socket Java] Incompréhension sur du multi-client

Vulgaan
Vulgaan
Niveau 1
08 février 2018 à 18:48:35

Hello,

J'ai un petit projet de Chat en Java à faire actuellement.
Je pensais avoir compris le fonctionnement client/serveur (tcp, udp).
Mais visiblement il me manque quelque chose.
Bien évidemment pour du multi-client, je vais devoir passer par les threads (ouverture d'une communication entre un client et le serveur), mais j'ai déjà un problème pour connecter plusieurs clients.

"java.net.BindException: Adresse déjà utilisée (Bind failed)"
Bon, ça semble indiquer que j'essaye d'écouter sur un port déjà occupé. Le problème c'est que ce port, il est occupé par mon serveur. Donc je suis dans le flou. :-(

Niveau code, pour le moment le strict minimum :

package chat;
public class Helper {
	public static final int PORT = 10196;
	public static final String END_OF_MESSAGE = "END_OF_MESSAGE";
} 

package chat;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
	ServerSocket serverSocket = null;
	Socket client = null;

	public Server() {
		try {
			serverSocket = new ServerSocket(Helper.PORT);
			
			while (true) {
				System.out.println("Serveur démarré");
				client = serverSocket.accept();
				System.out.println("Client connecté");
				client.close();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		new Server();
	}
}

package chat;

import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {
	 Socket clientSocket;
	
	Client(){
		try {
			clientSocket = new Socket("localhost", Helper.PORT);
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Bon, comme je l'ai dis, c'est vraiment minimal.

Message édité le 08 février 2018 à 18:51:15 par Vulgaan
stacksmashing
stacksmashing
Niveau 6
08 février 2018 à 19:23:32

Ton code ne correspond pas à ton problème.
À l'aveugle (sans avoir de code) je dirai que tu exécutes plusieurs fois le new ServerSocket(Helper.PORT); alors que c'est le accept() qui doit être répété plusieurs fois pour connecter X clients.

Vulgaan
Vulgaan
Niveau 1
08 février 2018 à 19:27:31

C'est bien le accept qui est bouclé.
Le new ServerSocket est exécuté une seule fois.

Ou alors je ne sais pas lire et comprendre mon propre code. :hap:

Vulgaan
Vulgaan
Niveau 1
08 février 2018 à 21:03:20

Bon bah, si je ne mets pas de main dans client (et donc que je n'instancie pas un nouveau Client), ça ne risque pas de fonctionner. :(

Je laisse ce sujet ouvert si j'ai une éventuelle question pour la suite.

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment