Rechercher : dans
Par :

Java et le chat

Dernière réponse le 2 oct 2008 à 23:21:28 micmic, le 28 mai 2002 à 22:33:46 
 Signaler ce message aux modérateurs

Salut à tous
Je suis en train d'apprendre Java et je voudrai savoir si il existe de bons livres qui partent d'un niveau plutot bas et qui explique comment mettre en place une applet de chat sur son site.

Merci d'avance pour tous ceux qui me répondront

MIcmic

Meilleures réponses pour « Java et le chat » dans :
[Firefox] plugin Java Jre de Sun VoirA) Les différentes variantes Java chez Sun B) Installation sous Mandriva Limited Edition 2005 ETAPE 1 ETAPE 2: Création du lien symbolique C) Installation sous debian lenny D) Installation sous ubuntu hardy heron A) Les différentes...
Installer Java sous Ubuntu VoirPar défaut, Firefox n'est pas fourni avec Java. Voici comment procéder pour l'installer: Ouvrez un terminal (Menu Applications > Accessoires > Terminal) et tapez: sudo aptitude install sun-java6-jre sun-java6-plugin ou sudo aptitude install ...
[Logiciel libre] Installation firefox 2.0+java+flash VoirInstallation firefox 2.0+java+flash en ligne de commande A. INTRODUCTION B. INSTALLATION FIREFOX 1. Création d'environnement 2. Téléchargement et vérification de la signature 3. Installation de Firefox 4. Démarrage de l'application C....
Télécharger Java Runtime Environment VoirJava Runtime Environment (JRE) installe la machine virtuelle Java, permettant de jouer en ligne, de discuter avec des personnes dans le monde entier, de calculer les intérêts de votre prêt immobilier ou de visualiser des images en 3D. Ces...
Java - Les types de données VoirLes primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et...
Java - Premier programme VoirPremière application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main...
J2EE - Java 2 Enterprise Edition VoirIntroduction au Java Framework Le «Java Framework» (Java 2 Platform) est composé de trois éditions, destinées à des usages différents : J2ME : Java 2 Micro Edition est prévu pour le développement d'applications embarquées, notamment sur des...

1

asevere, le 28 mai 2002 à 22:52:08

Arf ca va etre dur mais tout et possible a qui le veux bien

une applet et pas le plus simple a mettre en place ensuite vient le servlet pas bcp plus simple alors en ce qui concerne le chat... c'est deja un niveau tres avancé de java moi je te conseillerai si t es vraiment motivé de commencer par "Au coeur de java 2 "vol-1 Notions fondamentales chez campus press ISBN : 2-7440-0620-3
avec celui la tu aurais des applets fonctionnelles
ensuit le volume 2 Fonctions Avancées du meme editeur ISBN : 2-7440-0881-8
la tu trouvera tout ce dont tu as besion sur le multithreading et l'implementation des serveurs(et tu en aura sans doute grand besoin) puis ensuite un book specialisé sur les servlets (ca peut etre utile mais c sans doute pas indispensable...) voila
si tu as besion d info plus concrete sur Java n'hesite pas

Répondre à asevere

2

micmic, le 29 mai 2002 à 10:38:19

Merci beaucoup aserve

Je vais voir sur alapage si ils ont ces deux bouquins. Oui clairement java n'est pas facile je n'ai pour l'instant rien develloppé je ne fais que lire. Mais c'est manifestement un langage puissant. Ils ont tout juste sorti la version 1.4 et je me demande ce qu'elle a de plus que la 1.2. Des qu'il sagit de Java j'ai surtout des questions pas beaucoup de réponse :(

A ++

MIcmic

Répondre à micmic

3

mat, le 29 mai 2002 à 11:26:11

Salut,

j'ai un exemple de programme de chat en java mais ce n'est pas une applet. Cependant, le principe est le même: ouverture et fermeture de socket. Il faut donc s'informer un peu sur la notion de socket et de port. Un bon moyen pour progresser...

=================================
/***********************************************************­*********************************************
/ Sorte de "chat" (2001)
/
/----------------------------------------mat-------------------------------------------------
/
/
/ PRINCIPE: Le programme permet de se connecter sur le port d'un ordinateur distant, et d'envoyer
/ des messages sur ce même port.
/ On peut également recevoir des messages envoyé sur un port de notre ordinateur que
/ l'on aura au préalable ouvert.
/ Une fois les connexions établies, il est possible de communiquer entre les deux
/ ordinateurs comme un programme de chat.
/
/ CARACTERISTIQUES: le programme est constitués d'un thread pour l'émission et d'1 autre pour la
/ récéption. Il est possible de changer le Look&Feel.
/
/ UTILISATION: Pour recevoir des messages, il faut indiquer un port local de réception et cliquer
/ sur "Ecouter". Pour envoyer des messages, il est nécessaire d'abord de créer un
/ socket en indiquant les port et nom de la bécane sur laquelle on se connecte, puis
/ de cliquer sur "Créer Socket". Apres on ecrit n'importe quoi et on envoie ("Envoyer")
/
*********************************************************************************************************/


import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics;
import java.util.*;
import java.net.*;
import java.io.*;
import java.lang.*;

import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import javax.swing.border.*;
import javax.swing.colorchooser.*;
import javax.swing.plaf.metal.DefaultMetalTheme;
import javax.swing.plaf.metal.MetalLookAndFeel;

import javax.accessibility.*;




public class tp2
{

public static void main(String arg[])
{
JFrame win = new Fenetre();
win.show();
}
}


// la classe fenetre()
class Fenetre extends JFrame implements ActionListener
{



// le constructeur
public Fenetre()
{
// on met un titre
setTitle("Chat moi");

// on definit la taille
setSize(500, 400);

// on met un look and feel par defaut
updateLookAndFeel(metal);

// on gere l'appui sur la touche fermeture de la fenetre
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
} );

setLocation(100,100);


/******************************************************************
on indique le mode de placement des composants avec un Layout
Ici on utilise un Layout de type GridBagLayout ce qui permet
d'aligner les composants verticalement ou horizontalement, sans
qu'ils soient forcement de meme taille.
L'objet de type GridBagContraints permet d'apporter des
contraintes aux composants du Layout.

******************************************************************/

// on travaille avec des calques ou des panneaux
Container pane = getContentPane();

pane.setLayout(new GridBagLayout());

GridBagConstraints c = new GridBagConstraints();

/*****************************************************************
fill permet de déterminer s'il faut redimensionner le composant,
et ici uniquement horizontalement
******************************************************************/
c.fill = GridBagConstraints.HORIZONTAL;

/*****************************************************************
Ici on va ajouter des composants dans la fenetre. On utilise
plusieurs parametres:
- weightx:permet de redistribuer l'espace libre horizontal (s'il
y a) en fonction du "poids" du composant. Ainsi un composant
dont weightx vaudra zero n'aura pas d'espace en plus.
- gridx:indique la colonne où on place le composant
- gridy:indique la ligne où on place le composant

******************************************************************/

// permet de sauter une ligne par rapport au haut de la fenêtre
c.weightx = 0;
c.gridx = 0;
c.gridy = 0;
c.gridwidth=4;
c.gridheight=1;
JPanel p=new JPanel();
pane.add(p,c);


c.weightx = 0;
c.gridx = 0;
c.gridy = 1;
c.gridwidth=2;
c.gridheight=1;
//texte de saisie du message
JPanel labelpanel1=new JPanel();
JLabel l1=new JLabel("Ecrire le message à envoyer");
labelpanel1.add(l1);
pane.add(labelpanel1,c);

c.weightx = 0;
c.gridx = 2;
c.gridy = 1;
c.gridwidth=2;
c.gridheight=1;
// zone lecture
JPanel labelpanel2=new JPanel();
JLabel l2=new JLabel("Affichage des messages reçus");
labelpanel2.add(l2);
pane.add(labelpanel2,c);


c.fill = GridBagConstraints.BOTH;
c.weightx = 100;
c.weighty = 100;
c.gridx = 0;
c.gridy = 2;
c.gridwidth=2;
c.gridheight=1;
TextArea1=new JTextArea("");
TextArea1.setFont(new Font("TimesRoman",Font.BOLD,12));

pane.add(new JScrollPane(TextArea1),c);

c.weightx = 100;
c.weighty = 100;
c.gridx = 2;
c.gridy = 2;
c.gridwidth=2;
c.gridheight=1;
TextArea2=new JTextArea("");
TextArea2.setFont(new Font("TimesRoman",Font.ITALIC,12));

pane.add(new JScrollPane(TextArea2),c);


c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0;
c.weighty = 0;
c.gridx = 0;
c.gridy = 3;
c.gridwidth=1;
c.gridheight=1;
pane.add(new JLabel("Port:"),c);

c.weightx = 0;
c.gridx = 1;
c.gridy = 3;
c.gridwidth=1;
c.gridheight=1;
text2=new JTextField(20);
pane.add(text2,c);

c.weightx = 0;
c.gridx = 0;
c.gridy = 4;
c.gridwidth=1;
c.gridheight=1;
pane.add(new JLabel("Serveur: "),c);

c.weightx = 0;
c.gridx = 1;
c.gridy = 4;
c.gridwidth=1;
c.gridheight=1;
text3=new JTextField(20);
pane.add(text3,c);

c.weightx = 0;
c.gridx = 2;
c.gridy = 3;
c.gridwidth=1;
c.gridheight=2;
pane.add(new JLabel("Port: "),c);

c.weightx = 0;
c.gridx = 3;
c.gridy = 3;
c.gridwidth=1;
c.gridheight=2;
text4=new JTextField(20);
pane.add(text4,c);


c.weightx = 0;
c.gridx = 0;
c.gridy = 5;
c.gridwidth=2;
c.gridheight=1;
JPanel panel1=new JPanel();
button1=new JButton("< Envoyer >");
button1.setToolTipText("Cliquer ici pour envoyer le message");
button1.addActionListener(this);
panel1.add(button1);
pane.add(panel1,c);

c.weightx = 0;
c.gridx = 2;
c.gridy = 5;
c.gridwidth=2;
c.gridheight=1;
JPanel panel2=new JPanel();
button2=new JButton("Ecouter");
button2.setToolTipText("Cliquer ici pour lancer le serveur d'écoute");
button2.addActionListener(this);
panel2.add(button2);
pane.add(panel2,c);

c.weightx = 0;
c.gridx = 0;
c.gridy = 6;
c.gridwidth=4;
c.gridheight=1;
JPanel panel3=new JPanel();
button3=new JButton("Créer Socket client");
button3.setToolTipText("Cliquer ici pour créer le socket du client avant d'envoyer des messages");
button3.addActionListener(this);
panel3.add(button3);
pane.add(panel3,c);

c.weightx = 0;
c.gridx = 0;
c.gridy = 7;
c.gridwidth=4;
c.gridheight=1;
JPanel panel4=new JPanel();
JButton button4=new JButton("Quitter !");
button4.setToolTipText("Cliquer ici pour quitter le programme");
button4.addActionListener(this);
panel4.add(button4);
pane.add(panel4,c);




}





public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();

if(cmd.equals("Créer Socket client"))
{

try
{

// client
Integer I1=new Integer(text2.getText());
Socket s=new Socket(text3.getText(),I1.intValue());
System.out.println("CLIENT> Socket client cree. Prêt à envoyer des messages\n");

this.button3.setText("< Socket crée >");
this.button1.setText("Envoyer");

// on cree l'objet out pour ecrire au travers du socket
out=new PrintWriter(s.getOutputStream());
}
catch(IOException ei)
{
System.out.println("\nAttention, erreur de socket\nVérifiez si le port n'est pas déjà utilisé\nVérifier le nom de la station hôte\n"+ ei+"\n");
}
}
if (cmd.equals("Quitter !"))
{
// Annulation
System.exit(0);
}

if(cmd.equals("Envoyer"))
{
out.println(TextArea1.getText());
System.out.println("CLIENT> Message envoyé au serveur\n");
// on libère la socket
out.flush();
//on réinitialise le champ du message
TextArea1.setText("");
}


if(cmd.equals("< Envoyer >"))
{
System.out.println("Il faut d'abord créer le socket avant d'envoyer un message\n");

}


if(cmd.equals("Ecouter"))
{
new Tache(TextArea2,text4);
}


}


// la fonction qui permet de changer de LookandFeel
public void updateLookAndFeel(String laf)
{
try
{
UIManager.setLookAndFeel(laf);
SwingUtilities.updateComponentTreeUI(this);
}
catch (Exception ex)
{
System.out.println("Failed loading L&F: " + laf);
System.out.println(ex);
}
}



private JTextField text2,text3,text4;
private JButton button3,button1,button2;
private JTextArea TextArea1,TextArea2;
private Tache t;
private PrintWriter out;

// Possible Look & Feels
private String mac = "com.sun.java.swing.plaf.mac.MacLookAndFeel";
private String metal = "javax.swing.plaf.metal.MetalLookAndFeel";
private String motif = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
private String windows = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";


}
class Tache extends Thread
{
JTextArea TextArea;
JTextField text;

public Tache(JTextArea TextArea2,JTextField text4)
{
this.TextArea=TextArea2;
this.text=text4;
// on lance le thread
start();
}

public void run()
{


try
{
// on cree un thread pour le server car il est bloquant
Integer I2=new Integer(text.getText());
serv=new ServerSocket(I2.intValue());
System.out.println("SERVEUR> Socket serveur crée. En Attente de message\n");
sin=serv.accept();
BufferedReader in=new BufferedReader(new InputStreamReader(sin.getInputStream()));
boolean done=false;

while(!done)
{ TextArea.append(in.readLine()+"\n");
System.out.println("SERVEUR> Message bien reçu\n");
}
}
catch(IOException ei)
{
System.out.println("erreur "+ ei+"\n");
}
}

private Socket sin;
private ServerSocket serv;


}

=====================================


-> on peut tester le programme sur une seule bécane si on ne dispose pas d'un réseau.

a+
mat

Répondre à mat

4

micmic, le 1 jun 2002 à 15:09:07

Mat

Merci beaucoup j'avoue que je ne m'attendais pas à autant de gentillesse. Je commence tout juste à aborder la notion de socket.

Ton code sera soigneusement décortiqué.

merci vraiment

A+ j'espere

Répondre à micmic

5

 nadia, le 2 jun 2004 à 10:54:30

J'essaie de créee un chat en java;j'ai un program cleint et un program serveur;mais au niveau de l'exécution je ne sais pas comment my prendre,comment fauut il configurer la machine et créer un serveur ,pr que tt marche??

Répondre à nadia