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

  FORUM HardWare.fr
  Programmation

  [JAVA]Socket

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA]Socket

n°121373
redant
Posté le 04-04-2002 à 15:07:15  profilanswer
 

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

mood
Publicité
Posté le 04-04-2002 à 15:07:15  profilanswer
 

n°121376
darklord
You're welcome
Posté le 04-04-2002 à 15:10:33  profilanswer
 

oh ouais c'est surement que tu n'as pas appellé la méthode SetSecurityManager(JeDonnePasLaTraceDuProgrammeEtDoncPersonnePourraComprendre)
 
 :sarcastic:


---------------
Just because you feel good does not make you right
n°121380
redant
Posté le 04-04-2002 à 15:15:18  profilanswer
 

de quelle classe ?

n°121381
jupiler
Un cousin...
Posté le 04-04-2002 à 15:15:28  profilanswer
 

kelle exception?


---------------
Je ne suis ni pour, ni contre, bien au contraire  
n°121383
redant
Posté le 04-04-2002 à 15:17:54  profilanswer
 

ConnectException

n°121385
jupiler
Un cousin...
Posté le 04-04-2002 à 15:18:23  profilanswer
 

et le message d'erreur?
 
tu ne tenterais pas une connexion à Localhost par hasard  :sarcastic:

 

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


---------------
Je ne suis ni pour, ni contre, bien au contraire  
n°121387
redant
Posté le 04-04-2002 à 15:19:12  profilanswer
 

ah oui , excuse:
Connexion refusée

n°121389
darklord
You're welcome
Posté le 04-04-2002 à 15:19:39  profilanswer
 

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?


---------------
Just because you feel good does not make you right
n°121396
redant
Posté le 04-04-2002 à 15:22:05  profilanswer
 

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

n°121397
jupiler
Un cousin...
Posté le 04-04-2002 à 15:22:53  profilanswer
 

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]


---------------
Je ne suis ni pour, ni contre, bien au contraire  
mood
Publicité
Posté le 04-04-2002 à 15:22:53  profilanswer
 

n°121399
redant
Posté le 04-04-2002 à 15:24:47  profilanswer
 

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);

n°121401
redant
Posté le 04-04-2002 à 15:26:14  profilanswer
 

Pour le ping entre les deux postes pas de problème les adresses sont bien différentes et nom d'hote aussi

n°121403
darklord
You're welcome
Posté le 04-04-2002 à 15:27:53  profilanswer
 

impossible de te répondre avec aussi peu de paramètres


---------------
Just because you feel good does not make you right
n°121404
jupiler
Un cousin...
Posté le 04-04-2002 à 15:27:58  profilanswer
 

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?


---------------
Je ne suis ni pour, ni contre, bien au contraire  
n°121405
benou
Posté le 04-04-2002 à 15:29:25  profilanswer
 

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]

n°121407
redant
Posté le 04-04-2002 à 15:32:19  profilanswer
 

mon objet adresse:
 
private static InetAddress adresse;

n°121409
jupiler
Un cousin...
Posté le 04-04-2002 à 15:34:52  profilanswer
 

bon envoie la suite
 
et le client aussi!


---------------
Je ne suis ni pour, ni contre, bien au contraire  
n°121410
benou
Posté le 04-04-2002 à 15:34:59  profilanswer
 

redant a écrit a écrit :

mon objet adresse:
 
private static InetAddress adresse;  




et où est ce que tu l'initialises ?

n°121418
redant
Posté le 04-04-2002 à 15:41:46  profilanswer
 

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é

n°121419
gfive
Posté le 04-04-2002 à 15:42:42  profilanswer
 

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.

n°121422
gfive
Posté le 04-04-2002 à 15:44:13  profilanswer
 

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

n°121424
redant
Posté le 04-04-2002 à 15:48:39  profilanswer
 

J'ecoute bien:
 
public void attendreConnexion()throws Exception
 {
  socket = serverSocket.accept();
  fromClient = new BufferedInputStream(socket.getInputStream());
 
 }

n°121425
benou
Posté le 04-04-2002 à 15:49:31  profilanswer
 

j'ai toujours pas vu où adresse était initialisé ...

n°121427
gfive
Posté le 04-04-2002 à 15:51:18  profilanswer
 

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....

n°121430
darklord
You're welcome
Posté le 04-04-2002 à 15:52:01  profilanswer
 

9/10 que ton serveur se crashe et que tu ne t'en rends pas compte


---------------
Just because you feel good does not make you right
n°121431
benou
Posté le 04-04-2002 à 15:52:35  profilanswer
 

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:

n°121434
redant
Posté le 04-04-2002 à 16:00:30  profilanswer
 

J'ai deja un throws Exception sur mon main
et pas d'erreur il a l'air en pleine forme...

n°121437
gfive
Posté le 04-04-2002 à 16:05:18  profilanswer
 

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...

n°121440
darklord
You're welcome
Posté le 04-04-2002 à 16:09:28  profilanswer
 

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 ...)


---------------
Just because you feel good does not make you right
n°121450
redant
Posté le 04-04-2002 à 16:20:58  profilanswer
 

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é :(

n°121456
redant
Posté le 04-04-2002 à 16:28:31  profilanswer
 

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 ?

n°121458
darklord
You're welcome
Posté le 04-04-2002 à 16:32:01  profilanswer
 

bin c'est un peu le but ...


---------------
Just because you feel good does not make you right
n°121463
gfive
Posté le 04-04-2002 à 16:35:57  profilanswer
 

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.

n°121465
redant
Posté le 04-04-2002 à 16:40:59  profilanswer
 

ok, je vais essayer
 
merci à tous ceux qui m'ont aidé

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [JAVA]Socket

 

Sujets relatifs
[JAVA] cast, comment je fais ??Java sur s/390
[Java] Log4j et redirection des infosAidez cette jeune fille bloquee en Java, s'il vous plait
[Java] Peut on ecrire un objet,classe dans dans une socket ?[JAVA]Passer un fichier dans un socket
[ JAVA ] [ JBuilder ] Socket Exception ?[JAVA][Servlet] Socket Exception ???
[Java] Socket, Securité IEProbleme socket en JAVA / C
Plus de sujets relatifs à : [JAVA]Socket


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR