TCP client-serveur sous java
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
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