Un chti pb avec les sockets (debutant )

Un chti pb avec les sockets (debutant ) - Java - Programmation

Marsh Posté le 17-04-2003 à 11:32:35    

Salut, je suis un debutant en java et la j'avoue ne pas trop comprendre ou ca merde ;) en gros j'ai une fenetre et un bouton et qd je click sur le bouton l'une des 2 applis passe en ecoute et l'autre envoie des datas fin un echange tout bidon mais ca marche pas  
 
 
Le client

Code :
  1. import javax.swing.*;
  2. import javax.swing.border.Border;
  3. import org.w3c.dom.events.MouseEvent;
  4. import java.awt.*;
  5. import java.awt.event.*;
  6. import java.io.*;
  7. import java.net.*;
  8. public class LoOpSswinger
  9. {
  10. public static void main(String[] args)
  11. {
  12.  JFrame azz_Frame = new JFrame("Le Title de la frame" );
  13.  String label = new String(" Le Texte du Bouton " );
  14.  String label2 = new String(" ha ha ha  !!! " );
  15.  String titre_menu = new String (" Fichier " );
  16.  final JButton monbouton = new JButton(label);
  17.  final JButton monbouton2 = new JButton(label2);
  18.  JMenuBar bar = new JMenuBar();
  19.  JMenu menu = new JMenu(titre_menu,true);
  20.  JMenuItem dif_menu = new JMenuItem("ouvrir" );
  21.  JLabel l = new JLabel("teuteu" );
  22.  final String hote = new String ();
  23.  menu.add(dif_menu);
  24.  dif_menu = new JMenuItem("fermer" );
  25.  menu.add(dif_menu);
  26.  dif_menu = new JMenuItem(" A Propos " );
  27.  menu.add(dif_menu);
  28.  bar.add(menu);
  29.  monbouton.addActionListener(new ActionListener()
  30.  {
  31.  public void actionPerformed(ActionEvent e)
  32.   {
  33.    int click =0;
  34.    if (click %2 == 0)
  35.    {
  36.    monbouton.setLabel("sous merde"+ click);
  37.    envoie.je_send(hote,5555);
  38.    click ++;
  39.    }
  40.    else
  41.    {
  42.    monbouton.setLabel(" Le Texte du Bouton "+click);
  43.    click ++;
  44.    }
  45.   }
  46.  }       );
  47.  azz_Frame.setJMenuBar(bar);
  48.  azz_Frame.getContentPane().add(monbouton,BorderLayout.WEST);
  49.  azz_Frame.getContentPane().add(monbouton2,BorderLayout.EAST);
  50.  JOptionPane.showMessageDialog(azz_Frame, "Bienvenu chez moi" );
  51.  azz_Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  52.  azz_Frame.setSize(320,240);
  53.  azz_Frame.setVisible(true);
  54. }
  55. }
  56. class envoie
  57. {
  58. public static void je_send(String hote, int port)
  59. {
  60.  try
  61.  {
  62.    hote = new String (Inet4Address.getLocalHost().toString()); // Inet4Address.getByName("netlab4" ).toString()
  63.  }
  64.  catch (UnknownHostException e) {System.out.print("Erreur sur l'ip de loop back" );}
  65.  try
  66.  {
  67.   Socket connection = new Socket(hote,port);
  68.   PrintWriter out = new PrintWriter(connection.getOutputStream());
  69.   out.print("Azz client" );
  70.   out.flush();
  71.  }
  72.  catch (IOException e) { System.out.println("Erreur connection Socket" ); }
  73. }
  74. }


 
et le pseudo serveur

Code :
  1. import javax.swing.*;
  2. import javax.swing.border.Border;
  3. import org.w3c.dom.events.MouseEvent;
  4. import java.awt.*;
  5. import java.awt.event.*;
  6. import java.io.*;
  7. import java.net.*;
  8. public class AzzSwing
  9. {
  10. public static void main(String[] args)
  11. {
  12.  JFrame azz_Frame = new JFrame("Le Title de la frame" );
  13.  String label = new String(" Le Texte du Bouton " );
  14.  String label2 = new String(" ha ha ha  !!! " );
  15.  String titre_menu = new String (" Fichier " );
  16.  final JButton monbouton = new JButton(label);
  17.  final JButton monbouton2 = new JButton(label2);
  18.  JMenuBar bar = new JMenuBar();
  19.  JMenu menu = new JMenu(titre_menu,true);
  20.  JMenuItem dif_menu = new JMenuItem("ouvrir" );
  21.  JLabel l = new JLabel("teuteu" );
  22.  final String hote = new String ();
  23.  menu.add(dif_menu);
  24.  dif_menu = new JMenuItem("fermer" );
  25.  menu.add(dif_menu);
  26.  dif_menu = new JMenuItem(" A Propos " );
  27.  menu.add(dif_menu);
  28.  bar.add(menu);
  29.  monbouton.addActionListener(new ActionListener()
  30.  {
  31.  public void actionPerformed(ActionEvent e)
  32.   {
  33.    int click =0;
  34.    if (click %2 == 0)
  35.    {
  36.    monbouton.setLabel("sous merde"+ click);
  37.    envoie.je_recois(5555);
  38.    click ++;
  39.    }
  40.    else
  41.    {
  42.    monbouton.setLabel(" Le Texte du Bouton "+click);
  43.    click ++;
  44.    }
  45.   }
  46.  }       );
  47.  azz_Frame.setJMenuBar(bar);
  48.  azz_Frame.getContentPane().add(monbouton,BorderLayout.WEST);
  49.  azz_Frame.getContentPane().add(monbouton2,BorderLayout.EAST);
  50.  JOptionPane.showMessageDialog(azz_Frame, "Bienvenu chez moi" );
  51.  azz_Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  52.  azz_Frame.setSize(320,240);
  53.  azz_Frame.setVisible(true);
  54. }
  55. }
  56. class envoie
  57. {
  58. public static void je_send(String hote, int port)
  59. {
  60.  try
  61.  {
  62.    hote = new String (Inet4Address.getLocalHost().toString()); // Inet4Address.getByName("netlab4" ).toString()
  63.  }
  64.  catch (UnknownHostException e) {System.out.print("Erreur sur l'ip de loop back" );}
  65.  try
  66.  {
  67.   Socket connection = new Socket(hote,port);
  68.   PrintWriter out = new PrintWriter(connection.getOutputStream());
  69.   out.print("Azz client" );
  70.   out.flush();
  71.  }
  72.  catch (IOException e) { System.out.println("Erreur connection Socket" ); }
  73. }
  74. public static void je_recois(int port)
  75. {
  76.  try
  77.  {
  78.   ServerSocket reception= new ServerSocket(port,1);
  79.   Socket rec = reception.accept();
  80.   BufferedReader in = new BufferedReader( new InputStreamReader( rec.getInputStream() ) );
  81.   String reply = in.readLine();
  82.             System.out.println( "Le client m'a dit : " + reply );
  83.   in.close();
  84.   rec.close();
  85.   reception.close();
  86.  }
  87.  catch (IOException e) {System.out.println("PB de creaction socket" );}
  88. }
  89. }


 
en gros c tout bete mais ca me parait correct mais ca marche pas si kkun a une idée ou bien si je me suis tout simplement manké

Reply

Marsh Posté le 17-04-2003 à 11:32:35   

Reply

Marsh Posté le 17-04-2003 à 12:04:12    

Citation :


           ServerSocket reception= new ServerSocket(port,1);  


 :heink:  
forcément, là ca doit pas marcher terrible ... pkoi tu utilises pas le paramêtre port passé en paramêtre ?
 
ensuite, ton "click" est toujours à 0 vu que c'est une variable locale qui est redéclarée à chaque fois que tu appuie sur un bouton.
 
ensuite, c'est pas mal de fermer les flux et les sockets un coup de temps en temps (edit : dans le send ... dans la reception tu l'as fait)
 
enfin, si tu veux tester les sockets, fait le avec un prog tout bête sans IHM : tu arriveras mieux à isoler les problèmes


Message édité par benou le 17-04-2003 à 12:05:46

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 17-04-2003 à 12:16:05    

benou a écrit :

Citation :


           ServerSocket reception= new ServerSocket(port,1);  


 :heink:  
forcément, là ca doit pas marcher terrible ... pkoi tu utilises pas le paramêtre port passé en paramêtre ?
 
ensuite, ton "click" est toujours à 0 vu que c'est une variable locale qui est redéclarée à chaque fois que tu appuie sur un bouton.
 
ensuite, c'est pas mal de fermer les flux et les sockets un coup de temps en temps (edit : dans le send ... dans la reception tu l'as fait)
 
enfin, si tu veux tester les sockets, fait le avec un prog tout bête sans IHM : tu arriveras mieux à isoler les problèmes


 
je pige pas la ServerSocket reception= new ServerSocket(port,1);  
 ba je recup bien port passer en parametre et 1 je pensais que c t  le nb de connection entrante mais apparement c un autre paramete ( je viens de tater la doc  qui dis : ServerSocket(int port, int backlog)  
          Creates a server socket and binds it to the specified local port number, with the specified backlog.)
et sinon le %2 je c que ca change jamais j'ai juste paster mon code comme ca y a bcp de truc a corriger bon je test sans le paramtre  a 1 voir si c okay ou nan ;)
merci

Reply

Marsh Posté le 17-04-2003 à 12:21:43    

hum ca semble pas marcher mieux merci qd meme

Reply

Marsh Posté le 17-04-2003 à 12:23:39    

Ben, t'as mis quoi à la place de  

new ServerSocket(port,1);

 
?


Message édité par El_gringo le 17-04-2003 à 12:24:12
Reply

Marsh Posté le 17-04-2003 à 12:27:45    

El_gringo a écrit :

Ben, t'as mis quoi à la place de  

new ServerSocket(port,1);

 
?


 
ba

Code :
  1. new ServerSocket(port);


 
d'apres la doc le constructeur c ServerSocket(int port);

Reply

Marsh Posté le 18-04-2003 à 03:12:54    

qxn a écrit :

hum ca semble pas marcher mieux merci qd meme


ouais désolé, c'est moi qui ait merdé, j'ai mal lu ... pardon.


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 18-04-2003 à 18:57:47    

T'as pas envie de faire de l'objet avant de faire des sockets ?¿?
 
Parce que la en bidouillant ca devrait marchouiller a force, par contre, pour faire vivre ton appli et la développer, ca me parraît déja compromis.

Reply

Marsh Posté le 19-04-2003 à 15:13:25    

nraynaud a écrit :

T'as pas envie de faire de l'objet avant de faire des sockets ?¿?
 
Parce que la en bidouillant ca devrait marchouiller a force, par contre, pour faire vivre ton appli et la développer, ca me parraît déja compromis.


 
ba soit plus explicite ;) je demande k apprendre komme je te dis je suis debutant en java je passe direct du C au java sans passer par un langage objet entre donc oui l'objet ca me parle vaguement mais sans plus ;)

Reply

Marsh Posté le 19-04-2003 à 19:07:20    

qxn a écrit :


 
ba soit plus explicite ;) je demande k apprendre komme je te dis je suis debutant en java je passe direct du C au java sans passer par un langage objet entre donc oui l'objet ca me parle vaguement mais sans plus ;)
 


Je vais surement pas donner un cours dans le forum, c'est a toi de te documenter, je suggere juste de commencer par faire 2 objets a la con qui dialoguent, puis 3 puis une interraction un peu plus fine etc. Mais pas de commencer a apprendre le langage par sa bibliotheque de classes. De plus, en maîtrisant les concepts objets, tu sauras adapter aux autre langages.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed