Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4231 connectés 

 


Dernière réponse
Sujet : [JAVA]Socket
redant ok, je vais essayer
 
merci à tous ceux qui m'ont aidé

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
redant ok, je vais essayer
 
merci à tous ceux qui m'ont aidé
gfive

redant a écrit a écrit :

Maintenant ça marche nickel mais je pense que je vais adopter la solution de gfive qui me paraît 10fois plus propre que la mienne
 
Est-il possible d'accepter plusieurs connexions à la fois en multithreading ?  




 
Ben oui...L'idée, c'est que tu récupères un objet Socket, que tu passes au constructeur d'une classe Runnable, qui gèrera les envois/réceptions sur ta socket...et donc, au prochain retour de accept(), ben tu as un autre client, etc....
 
Si tu veux voir un serveur qui marche comme ça :  
 
http://chat.orange.fr
 
version applet.

darklord bin c'est un peu le but ...
redant Maintenant ça marche nickel mais je pense que je vais adopter la solution de gfive qui me paraît 10fois plus propre que la mienne
 
Est-il possible d'accepter plusieurs connexions à la fois en multithreading ?
redant Ca y est, j'ai compris.
 
C'etait vraiment une grosse connerie
J'ai completement oublié que je lancais mon serveur en telnet
du coup le client ne trouvait pas le serveur.
 
Je suis vraiment désolé :(
darklord démarre ton serveur uniquement et fais un telnet dessus pour voir si ca passe. Si ca passe ton client déconne. Sinon tu peux etre sur que ton serveur ou la liaison déconne (et ton client peut etre aussi ...)
gfive Bah, je te dis, après ton accept() (qui est bloquant) essaie de mettre une trace (system.out.println("Nouveauclient!" );)
 
et fait des telnet sur le port d'écoute (telnet machine port) depuis différents machines : si le telnet te répond 'connection refused" c'est que : soit le serveur écoute pas,
soit la connection ne s'ouvre pas : donc, par exemple, une config de FireWall qui empêche d'ouvrir un port en écoute, par exemple, c'est assez courant : genre, config de bas e du firewell des distribs Mandrake de Linux...
redant J'ai deja un throws Exception sur mon main
et pas d'erreur il a l'air en pleine forme...
benou

gfive a écrit a écrit :

Et tu as essayé d'écrire la trace de tes exceptions?? Ca pourrait aider!!
Pasque bon, ça a l'air a priori correct, ton serveur..  
 
Essaie un gros try {
}catch (Exception  e) {
e.printStackTrace(System.out);
}
 
autour de ton main, histoire de voir si il te répond pas des insultes intéressantes....  




un bon throws Exception sur le main suffit ! :sol:

darklord 9/10 que ton serveur se crashe et que tu ne t'en rends pas compte
gfive Et tu as essayé d'écrire la trace de tes exceptions?? Ca pourrait aider!!
Pasque bon, ça a l'air a priori correct, ton serveur..  
 
Essaie un gros try {
}catch (Exception  e) {
e.printStackTrace(System.out);
}
 
autour de ton main, histoire de voir si il te répond pas des insultes intéressantes....
benou j'ai toujours pas vu où adresse était initialisé ...
redant J'ecoute bien:
 
public void attendreConnexion()throws Exception
 {
  socket = serverSocket.accept();
  fromClient = new BufferedInputStream(socket.getInputStream());
 
 }
gfive Si la connection est refusée, c'est sans doute que :  
1 - le serveur n'écoute pas, vu ton code, je peux rien duire, à moins que tu n'aies tout mis, auquel cas je pense que c'est ça,
 
2 - y'a un firewall de brute entre tes 2 machines!! :D
gfive Ben déjà, essaie de mettre un try {} catch autour de l'instanciation de ton ServerSocket...
Et si tu n'appelles jamais accept(), il n'écoute pas le port, le serveur!!
 
Ce que je te conseille :
 
public class Server IMPLEMENTS RUNNABLE {
 
...
 
public Serveur(String path,int nuport) throws Exception {
 
 port = nuport;
 public boolean alive = true;
 try {
     adresse=adresse.getLocalHost();
 }
 catch (UnknownHostException e) {
    System.out.println("machine pastrouvée" );
    System.exit(1);
 }
 
 adresseServeur=adresse.getHostAddress();
 
 serverSocket = new ServerSocket(port);
  Thread t = new Thread(this);
   t.start();
}
 
 
public void run() {
   Socket client;
   while (alive) {
      try {
        client = serverSocket.accept();
        System.out.println("J'ai un nouveau client, chouette alors!" );
      catch ( IOException ioe) {
      }
}
 
 
}
 
 
 
Ensuite, avec un simple telnet sur le bon port, ton serveur doit te dire qu'i la un client.
redant Voila la partie du client qui fait la connexion
 
public Session(String nomServeur,int port,String request, String identifiantSession)throws IOException
 {
 
  System.out.println("Essai de connexion avec:" +nomServeur);
 
  requete=request;
  id=identifiantSession;
 
  try {
   adresse=adresse.getByName(nomServeur);  //résolution d'adresse à partir du nom du serveur
   }
  catch (UnknownHostException e) {
   System.out.println("La machine n'a pas été trouvée" );
   System.exit(1);
          }
 
 
  socket= new Socket(adresse,port);  //Création d'un socket
  System.out.println("Creation d'une connexion avec: "+nomServeur +" avec port="+port);
 
 }// de constructeur Session
 
 
Erreur au niveau de la création du socket:
Connexion Refusée
 
 
 
J'ai vraiment l'impression que c'est un problème de sécurité
benou

redant a écrit a écrit :

mon objet adresse:
 
private static InetAddress adresse;  




et où est ce que tu l'initialises ?

jupiler bon envoie la suite
 
et le client aussi!
redant mon objet adresse:
 
private static InetAddress adresse;
benou et où est ce qu'il écoute ton serveur là ???
 
edit : pardon, j'avais pas vu que c'était le constructeur ...

 

[jfdsdjhfuetppo]--Message édité par benou--[/jfdsdjhfuetppo]

jupiler adresse=adresse.getLocalHost();  
 
adresseServeur=adresse.getHostAddress();  
 
 
ya déjà qqchose qui m'échappe. A quoi cela sert-il au serveur de connaitre sa propre adresse?
(a moins que tu ne veuille l'afficher pour connaitre l'IP local)
 
et de quel objet adresse s'agit-il?
darklord impossible de te répondre avec aussi peu de paramètres
redant Pour le ping entre les deux postes pas de problème les adresses sont bien différentes et nom d'hote aussi
redant Voila mon serveur (le debut)
 
 
public Serveur(String path,int nuport)throws Exception
 {
 
  port=nuport;
 
  try {
  adresse=adresse.getLocalHost();
  }
  catch (UnknownHostException e) {
   System.out.println("machine pastrouvée" );
   System.exit(1);
         }
 
  adresseServeur=adresse.getHostAddress();
 
  serverSocket = new ServerSocket(port);
jupiler question à 2 balles : tes 2 postes ont bien le protocole TCP/IP configuré, avec une adresse IP distincte
 
et est-ce que tu peux pinger d'un poste à l'autre ?

 

[jfdsdjhfuetppo]--Message édité par jupiler--[/jfdsdjhfuetppo]

redant nan c pas ça, je l'adresse à laquelle il essait de se connecter est bien celle de la machine ou tourne mon serveur avec le bon numéro de port
darklord ton serveur n'écoute pas tiens.
 
Du coté server tu dois instancier un ServeurSocket(); et écouter les requetes via un s.accept(); où s est ton serversocket.
 
Si tu ne fais pas ca ton client va avoir du mal à se connecter. Il doit y avoir un truc qui change quand tu es passé sur une autre machine.
 
c'est quoi la valeur d'adresse et de port dans ton premier post?
redant ah oui , excuse:
Connexion refusée
jupiler et le message d'erreur?
 
tu ne tenterais pas une connexion à Localhost par hasard  :sarcastic:

 

[jfdsdjhfuetppo]--Message édité par jupiler--[/jfdsdjhfuetppo]

redant ConnectException
jupiler kelle exception?
redant de quelle classe ?
darklord oh ouais c'est surement que tu n'as pas appellé la méthode SetSecurityManager(JeDonnePasLaTraceDuProgrammeEtDoncPersonnePourraComprendre)
 
 :sarcastic:
redant J'ai une petite application Java avec un serveur et un client qui communiquent par sockets.
 
Lorsque je lance mon client et mon serveur sur la meme machine pas de probleme: la connexion se fait entre les deux et le programme suit son execution normale.
 
Par contre si je lance mon serveur et mon client sur deux machines différentes j'ai une exception au moment de la création du socket coté client:
 
socket= new Socket(adresse,port);
 
si kelk1 paut m'aider merci d'avance

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)