TCP client-serveur sous java

Fermé
papis301 Messages postés 143 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 18 décembre 2012 - 16 août 2012 à 12:07
 papis301 - 23 oct. 2012 à 17:56
Bonjour, je suis entrain de développer sous java un logiciel qui doit gérer des opérations bancaires d'où le serveur doit gérer toutes les commandes envoyées par la machine cliente.
Bon j'arrive à insérer dans ma base de données mais par contre je n'arrive pas à lister les données insérer merci de m'aider un peu

pour la classe qui se trouve côté serveur on a :

package Application;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.sql.*;
import java.util.*;

import javax.swing.*;


public class Serveur extends JFrame implements ActionListener{
private JTextArea zonerecep;
private JButton quitter;
private JPanel pan1, pan2;

public Serveur(){
zonerecep=new JTextArea(15,40);
pan1=new JPanel();
pan2=new JPanel();
quitter=new JButton("Quitter");
quitter.addActionListener(this);
add(pan1,BorderLayout.CENTER);
add(pan2,BorderLayout.SOUTH);
pan1.add(new JScrollPane(zonerecep));
pan2.add(quitter);
setSize(500,500);
setLocationRelativeTo(null);//perment de centrer la fen?tre
setResizable(false);
setTitle("Interface Serveur");
setVisible(true);

try{
ServerSocket serv=new ServerSocket(8000);
zonerecep.append("le serveur a d?marr?"+"\n");
int numclient=1;
while(true){
Socket socket=serv.accept();
InetAddress adress=socket.getInetAddress();
String ip=adress.getHostAddress();
zonerecep.append("client n?:"+numclient+"adresse ip:"+ip+"\n");
Service s=new Service(socket);
s.start();
numclient++;
}
}
catch(Exception e){
System.out.println(e.getMessage());
}
}
class Service extends Thread
{
Connection con=null;
PreparedStatement st=null;
ResultSet rs=null;
Socket socket;
ArrayList <Clients>liste=null;
public Service(Socket socket){
this.socket=socket;
try{
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/banque","root","");
}
catch(Exception e){
System.out.println("!!!!"+e.getMessage());
}
}
public void run(){
try{
OutputStream os=socket.getOutputStream();
InputStream is=socket.getInputStream();
ObjectInputStream ois =new ObjectInputStream(is);
ObjectOutputStream oos =new ObjectOutputStream(os);
String mode;
do{
mode=(String)ois.readObject();
zonerecep.append("requ?te en cours d'exploitation!!!"+mode+"\n");
if (mode.equals("ajoutclient"))
{
Clients c=(Clients)ois.readObject();
st=con.prepareStatement("insert into clients(nom,prenom) values (?,?)");
st.setString(1,c.getNom());
st.setString(2,c.getPrenom());
st.executeUpdate();
}
else
{
if(mode.equals("listerclient"))
{

liste=new ArrayList<Clients>();
st=con.prepareStatement("select nom, prenom from clients");
rs=st.executeQuery();

while (rs.next())
{
Clients c=new Clients();
c.setNom(rs.getString("nom"));
c.setPrenom(rs.getString("prenom"));
liste.add(c);
}
oos.writeObject(liste);
oos.flush();

}
}
}
while(true);
}
catch(Exception e){
System.out.println(e.getMessage());

}
}
}
/**
* @param args
*/
public void actionPerformed(ActionEvent e){
if(e.getSource()==quitter){
dispose();
System.exit(0);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Serveur();
}

}


et pour la classe qui doit lister les données on a :

package Application;

import java.awt.BorderLayout;
import java.awt.event.*;
import java.util.*;

import javax.swing.*;



public class ListeClients extends JFrame implements ActionListener{
/**
*
*/
private JTable table;
private Vector <String> colonnes;
private Vector <String> tuple;
private Vector <Vector> lignes;
private JPanel pan1, pan2;
private JButton creercpte, quitter;
private ArrayList<Clients>liste;

public ListeClients(ArrayList<Clients> liste){
//listecli=liste;
pan1=new JPanel();
pan2=new JPanel();
creercpte=new JButton("Creer compte");
quitter=new JButton("Quitter");

colonnes=new Vector<String>();
//colonnes.add("Numero");
colonnes.add("Nom");
colonnes.add("Prenom");

lignes=new Vector<Vector>();
for (int i=0;i<liste.size();i++)
{
tuple=new Vector<String>();
Clients c=liste.get(i);
tuple.add(c.getNom());
tuple.add(c.getPrenom());
lignes.add(tuple);
}

setTitle("Liste des clients");
setSize(500,500);
creercpte.addActionListener(this);
quitter.addActionListener(this);
table=new JTable(lignes,colonnes);
pan1.add(new JScrollPane(table));
pan2.add(creercpte);
pan2.add(quitter);
add(pan1,BorderLayout.CENTER);
add(pan2,BorderLayout.SOUTH);
setVisible(true);

}
public void actionPerformed(ActionEvent e){
if(e.getSource()==quitter){
dispose();
new Principale();
}
else if(e.getSource()==creercpte){
dispose();
new CreerCompte();
}

}

}

un rappel les données sont sérialisées et la classe qui implémente la sérialisation c'est :

package Application;

import java.io.*;

public class Clients implements Serializable{
private String nom;
private String prenom;



public String getNom(){
return nom;
}
public void setNom(String nom){
this.nom=nom;
}
public String getPrenom(){
return prenom;
}
public void setPrenom(String prenom){
this.prenom=prenom;
}
}

merci de me donner un coup de main



A voir également:

1 réponse

Ta classe ListeClients est incomplète. Elle ne peut pas démarrer dans l'état où elle est. Est-ce que tu as posté la bonne version ?
0
merci beaucoup j'ai résolu le problème

au fait je n'avais pas mis la connexion par socket
0