Problème connection reset

Signaler
Messages postés
66
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 juillet 2013
-
lezj
Messages postés
66
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 juillet 2013
-
Bonjour à tous et à toutes

Voilà, je viens vous voir car je suis sur le développement d'une application client/serveur de gestion bancaire.

le problème est que lorsque j'exécute une requête du client vers le serveur et vice versa tout se passe bien mais cela ne se passe bien qu'une seule fois.
si je retente l'expérience j'ai une erreur "connection reset".
je ne sais pas d'où cela peut provenir alors je vous demande votre aide pour m'aider à trouver l'erreur dans le code.

voici le code coté serveur:

package Rsx;

import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;

import Modele.Agence;
import Modele.Client;
import Modele.Compte;
import Modele.Dagence;
import Modele.Dclient;


public class Serveur extends Thread {

private int port;
private String ip;
private InputStream is;
private ObjectInputStream ois;
private String module;
private String action;
private Socket sSocket;

public Serveur(int pPort, String pIp){
this.port = pPort;
this.ip = pIp;
sSocket = null;
}

public void run(){

//dès le lancement du serveur je lance l'écoute des requêtes client
try {
ServerSocket ssServer = new ServerSocket(port); //port d'écoute du listener
while(true){			  //je boucle en attendant une connexion cliente
Socket sSocket = null;
sSocket = ssServer.accept();
System.out.println("connexion acceptée!");
is = sSocket.getInputStream();
ois = new ObjectInputStream(is);

do{
//					je récupère l'entité sur laquelle l'opération doit s'effectuer
module = (String)ois.readObject();
if(module.equals("agence")){
//je récupère l'action / opération à effectuer
action = (String)ois.readObject();
if(action.equals("ajouter")){
Agence agence = new Agence();
agence = (Agence)ois.readObject();
ajoutAgence(agence);
}
else if (action.equals("selectionner")) {

ArrayList listeAgences = new ArrayList();
listeAgences = afficheAgence();

try {
sSocket = new Socket(ip,port);
OutputStream os = sSocket.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(listeAgences);
oos.flush();
}catch(Exception ex){
//							System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
else if (action.equals("lister")) {
//							System.out.println(module+" "+action);
//je récupère la liste des agences directement dans la base de données
//grâce à la méthode privée afficheAgence() {étape 2}
ArrayList listeAgences = new ArrayList();
listeAgences = afficheAgence();

//une fois la liste récupérée je la renvoie au client
try {
//sSocket = new Socket("127.0.0.1",3000);
OutputStream os = sSocket.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(module);
oos.writeObject(action);
oos.writeObject(listeAgences);
oos.flush();
}catch(Exception ex){
//							System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
}
else if (module.equals("client")){
action = (String)ois.readObject();
if(action.equals("ajouter")){
Client client = new Client();
client = (Client)ois.readObject();
//						System.out.println(client.getNom()+" "+client.getPrenoms());
ajoutClient(client);
}
else if(action.equals("lister")){
ArrayList<Client> listeClients = new ArrayList<Client>();
listeClients = afficheClient();

try {
//sSocket = new Socket("127.0.0.1",3000);
OutputStream os = sSocket.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(listeClients);
oos.flush();
}catch(Exception ex){
//							System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
else if(action.equals("rechercher")){
//code a executer
}
else if(action.equals("afficheClientAgence")){
String nomAgence = (String)ois.readObject();
ArrayList<Client> listeClientAgence = new ArrayList<Client>();
//							listeClientAgence = afficheClientAgence(nomAgence);
try {
//sSocket = new Socket("127.0.0.1",4000);
OutputStream os = sSocket.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(listeClientAgence);
oos.flush();
}catch(Exception ex){
//								System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
}
else if (module.equals("compte")){
action = (String)ois.readObject();
if(action.equals("creer")){
Compte compte = new Compte();
compte = (Compte)ois.readObject();
//							System.out.println(client.getNom()+" "+client.getPrenoms());
//							ajoutCompte(compte);
}
else if(action.equals("lister")){
//code a executer
}
else if(action.equals("relever")){
//code a executer
}
}
else if(module.equals("operation")){
action = (String)ois.readObject();
if(action.equals("ajouter")){
//code a executer
}
else if(action.equals("compte_client")){
//code a executer
}
}

} 
while(!module.equals("quitter"));
ois.close();
is.close();
sSocket.close();
ssServer.close();
}	
}catch(Exception ex){
//			System.out.println(ex.getMessage());
ex.printStackTrace();
}

}


public static void doServer(){

Serveur s = new Serveur(2000, "127.0.0.1");
s.start();
}

public static void main(String[] args){

doServer();
}

private static synchronized void ajoutAgence(Agence agence){

Dagence dAgence = new Dagence();
dAgence.addAgence(agence);
}

private static ArrayList afficheAgence(){

ArrayList lListeAgences = new ArrayList();
Dagence dAgence = new Dagence();
lListeAgences = dAgence.getAgencesList();

return lListeAgences;
}

private static synchronized void ajoutClient(Client client){

//		System.out.println(client.getCodeAgence()+" "+client.getNom());
Dclient dClient = new Dclient();
dClient.AddClient(client);		   
}

private static ArrayList<Client> afficheClient(){
ArrayList<Client> lListeClients = new ArrayList<Client>();
Dclient dClient = new Dclient();
lListeClients = dClient.getClientList();

return lListeClients;

}

}



et voici le code coté client qui va avec:

package Vues;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SpringLayout;

import Modele.Agence;

public class FListeAgences extends JFrame {

private SpringLayout springLayout;
private final JScrollPane scrollPane = new JScrollPane();
private final JButton creerCleintButton = new JButton();
private final JButton quitterButton = new JButton();
private InputStream is;
private ObjectInputStream ois;
private OutputStream os;
private ObjectOutputStream oos;
private ArrayList listeAgences;

private final JScrollPane scrollPane_1 = new JScrollPane();
private final JTable tableau = new JTable();
/**
 * Launch the application
 * @param args
 */
public static void main(String args[]) {
try {
FListeAgences frame = new FListeAgences();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}

/**
 * Create the frame
 */
public FListeAgences() {
super();
setBounds(100, 100, 500, 375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
String module = "agence";
String action = "lister";

//j'envoie les données au serveur pour exécution de la requête {étape 1}
try {
        os = FAccueil.serveur.getOutputStream();
        oos = new ObjectOutputStream(os);
        oos.writeObject(module);
        oos.writeObject(action);
        oos.flush();
        is = FAccueil.serveur.getInputStream();
        ois = new ObjectInputStream(is);
        module = (String)ois.readObject();
        action = (String)ois.readObject();
        if((module.equals("agence"))&&(action.equals("lister"))){
        	listeAgences = (ArrayList)ois.readObject();
        tableau.setModel(new ModeleStatiqueObjetAgence(listeAgences));
tableau.getSelectionModel().setSelectionInterval(0, 0);
        }
        
//	        System.out.println("Le nombre d'éléments renvoyés par le serveur est: "+listeAgences.size());
}catch(Exception ex){
ex.printStackTrace();
JOptionPane.showMessageDialog(null, ex.getMessage().toString(), "Alert", JOptionPane.ERROR_MESSAGE);
}
try {
jbInit();
} catch (Throwable e) {
e.printStackTrace();
}
//
}
private void jbInit() throws Exception {
springLayout = new SpringLayout();
getContentPane().setLayout(springLayout);
setTitle("Liste Agences");

getContentPane().add(scrollPane);
springLayout.putConstraint(SpringLayout.NORTH, scrollPane, 75, SpringLayout.NORTH, getContentPane());
springLayout.putConstraint(SpringLayout.WEST, scrollPane, 45, SpringLayout.WEST, getContentPane());

getContentPane().add(creerCleintButton);
creerCleintButton.addActionListener(new CreerCleintButtonActionListener());
springLayout.putConstraint(SpringLayout.SOUTH, creerCleintButton, 290, SpringLayout.NORTH, getContentPane());
springLayout.putConstraint(SpringLayout.WEST, creerCleintButton, 95, SpringLayout.WEST, getContentPane());
creerCleintButton.setText("Créer Client");

getContentPane().add(quitterButton);
springLayout.putConstraint(SpringLayout.EAST, quitterButton, 390, SpringLayout.WEST, getContentPane());
quitterButton.addActionListener(new QuitterButtonActionListener());
springLayout.putConstraint(SpringLayout.NORTH, quitterButton, 264, SpringLayout.NORTH, getContentPane());
quitterButton.setText("Quitter");

getContentPane().add(scrollPane_1);
springLayout.putConstraint(SpringLayout.SOUTH, scrollPane_1, 210, SpringLayout.NORTH, getContentPane());
springLayout.putConstraint(SpringLayout.NORTH, scrollPane_1, 25, SpringLayout.NORTH, getContentPane());
springLayout.putConstraint(SpringLayout.EAST, scrollPane_1, 410, SpringLayout.WEST, getContentPane());
springLayout.putConstraint(SpringLayout.WEST, scrollPane_1, 65, SpringLayout.WEST, getContentPane());

scrollPane_1.setViewportView(tableau);

}
private class CreerCleintButtonActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
creerCleintButton_actionPerformed(e);
}
}
private class QuitterButtonActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
quitterButton_actionPerformed(e);
}
}
protected void creerCleintButton_actionPerformed(ActionEvent e) {
}
protected void quitterButton_actionPerformed(ActionEvent e) {

try{
 dispose();
}catch(Exception ex){
ex.printStackTrace();
}
}

}



Voilà! Tout y est! enfin presque...

je voudrais juste savoir s'il y a des incohérences qui provoquent la fermeture de ma connexion.

Merci bien à chacun d'entre vous.
Lez-J

7 réponses

Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
19 décembre 2016
22
Salut,

Je n'ai pas regardé le code dans le détail mais j'ai remarqué :
ois.close();
is.close();
sSocket.close();
ssServer.close();


Tu fermes donc le socket client ET le socket serveur à l'issue de la première communication. Il est donc normal que tu ne puisses plus accepter de connexion après la première. À quelle ligne de code as-tu l'erreur exactement ? Je suppose que c'est celle-ci :
sSocket = ssServer.accept();
Messages postés
66
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 juillet 2013

Bonjour Jojo,


d'abord merci pour ta réaction si rapide. Le fait est que l'erreur m'est déclarée du coté client ou alors je ne comprends pas bien le message d'erreur. voici le msg d'erreur dans sa totalité


java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2213)
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2226)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2694)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:761)
at java.io.ObjectInputStream.(ObjectInputStream.java:277)
at Vues.FListeAgences.(FListeAgences.java:65)
at Vues.FAccueil.itemListerAgence_actionPerformed(FAccueil.java:166)
at Vues.FAccueil$ItemListerAgenceActionListener.actionPerformed(FAccueil.java:126)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.AbstractButton.doClick(AbstractButton.java:302)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1051)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1092)
at java.awt.Component.processMouseEvent(Component.java:5517)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3135)
at java.awt.Component.processEvent(Component.java:5282)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3984)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3819)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1791)
at java.awt.Component.dispatchEvent(Component.java:3819)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)



Donc d'après ce que j'ai compris, l'erreur se situe à ce niveau
at Vues.FListeAgences.(FListeAgences.java:65)


et là nous somme du coté client et c'est cette instruction qui s'y trouve:
ois = new ObjectInputStream(is);


donc voilà un peu le topo. Mais dans un premier temps je vais prendre ta remarque sur la fermeture des sockets en compte et te dire si le problème est résolu. Si entre temps tu vois autre chose, je t'en remercie d'avance.
Lez-J
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
19 décembre 2016
22
Re,

Il faudrait voir FAccueil pour voir comment est géré le Socket "serveur".
Une fois qu'il est "closed" par le serveur, il est inutilisable. Il faut le réinstancier.
Messages postés
66
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 juillet 2013

Bien voici le code de FAccueil


package Vues;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.SpringLayout;

public class FAccueil extends JFrame {

private SpringLayout springLayout;
private final JMenuBar menuBar = new JMenuBar();
private final JMenuItem itemCreerAgence = new JMenuItem();
private final JMenuItem itemListerClients = new JMenuItem();
private final JMenuItem itemListerAgence = new JMenuItem();
private final JMenu agenceMenu = new JMenu();
private final JMenu clientMenu = new JMenu();
private final JMenuItem itemListerClientAgence = new JMenuItem();
private final JMenu compteMenu = new JMenu();
private final JMenuItem itemListerCompteClient = new JMenuItem();
private final JMenuItem itemListerCompte = new JMenuItem();
private final JMenuItem itemReleveCompte = new JMenuItem();
private final JButton quitterButton = new JButton();
public static Socket serveur;
private OutputStream os;
private ObjectOutputStream oos;
public static String ip;
public static int port;
/**
 * Launch the application'"dx  
 * 
 * @param args
 */
public static void main(String args[]) {
try {
FAccueil frame = new FAccueil();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}

/**
 * Create the frame
 */
public FAccueil() {
super();
setBounds(100, 100, 585, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try {
ip = "127.0.0.1";
port = 2000;
serveur = new Socket(ip, port);
jbInit();
} catch (Throwable e) {
e.printStackTrace();
}
//
}
private void jbInit() throws Exception {
springLayout = new SpringLayout();
getContentPane().setLayout(springLayout);
setTitle("Menu Principal");

setJMenuBar(menuBar);

menuBar.add(agenceMenu);
agenceMenu.setText("Agence");

agenceMenu.add(itemCreerAgence);
itemCreerAgence.addActionListener(new ItemCreerAgenceActionListener());
itemCreerAgence.setText("Créer Agence");

agenceMenu.add(itemListerAgence);
itemListerAgence.addActionListener(new ItemListerAgenceActionListener());
itemListerAgence.setText("Lister Agences");

menuBar.add(clientMenu);
clientMenu.setText("Client");

clientMenu.add(itemListerClients);
itemListerClients.addActionListener(new ItemListerClientsActionListener());
itemListerClients.setText("Lister Clients");

clientMenu.add(itemListerClientAgence);
itemListerClientAgence.addActionListener(new ItemListerClientAgenceActionListener());
itemListerClientAgence.setText("Lister Clients par Agence");

menuBar.add(compteMenu);
compteMenu.setText("Compte");

compteMenu.add(itemListerCompteClient);
itemListerCompteClient.addActionListener(new ItemListerCompteClientActionListener());
itemListerCompteClient.setText("Liste des Comptes Client");

compteMenu.add(itemListerCompte);
itemListerCompte.addActionListener(new ItemListerCompteActionListener());
itemListerCompte.setText("Liste des Comptes");

compteMenu.add(itemReleveCompte);
itemReleveCompte.addActionListener(new ItemReleveCompteActionListener());
itemReleveCompte.setText("Relevé Compte Bancaire");

getContentPane().add(quitterButton);
quitterButton.addActionListener(new QuitterButtonActionListener());
springLayout.putConstraint(SpringLayout.NORTH, quitterButton, 270, SpringLayout.NORTH, getContentPane());
springLayout.putConstraint(SpringLayout.WEST, quitterButton, 240, SpringLayout.WEST, getContentPane());
quitterButton.setText("Quitter");
}
private class ItemCreerAgenceActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
itemCreerAgence_actionPerformed(e);
}
}
private class ItemListerAgenceActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
itemListerAgence_actionPerformed(e);
}
}
private class ItemListerClientsActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
itemListerClients_actionPerformed(e);
}
}
private class ItemListerClientAgenceActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
itemListerClientAgence_actionPerformed(e);
}
}
private class ItemListerCompteClientActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
itemListerCompteClient_actionPerformed(e);
}
}
private class ItemListerCompteActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
itemListerCompte_actionPerformed(e);
}
}
private class ItemReleveCompteActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
itemReleveCompte_actionPerformed(e);
}
}
private class QuitterButtonActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
quitterButton_actionPerformed(e);
}
}
protected void itemCreerAgence_actionPerformed(ActionEvent e) {

FAjoutAgence fenAjoutAgence = new FAjoutAgence();
fenAjoutAgence.setVisible(true);
}
protected void itemListerAgence_actionPerformed(ActionEvent e) {

FListeAgences fenListAgences = new FListeAgences();
fenListAgences.setVisible(true);
}
protected void itemListerClients_actionPerformed(ActionEvent e) {

FListeClients fenListClients = new FListeClients(); 
fenListClients.setVisible(true);
}
protected void itemListerClientAgence_actionPerformed(ActionEvent e) {

FClientsAgence fenListCliAg = new FClientsAgence();
fenListCliAg.setVisible(true);
}
protected void itemListerCompteClient_actionPerformed(ActionEvent e) {

FListeCompteClient fenListCompteCli = new FListeCompteClient();
fenListCompteCli.setVisible(true);
}
protected void itemListerCompte_actionPerformed(ActionEvent e) {

FListeComptes fenListCpt = new FListeComptes();
fenListCpt.setVisible(true);
}
protected void itemReleveCompte_actionPerformed(ActionEvent e) {

FReleveCompte fenRelevecpt = new FReleveCompte();
fenRelevecpt.setVisible(true);
}
protected void quitterButton_actionPerformed(ActionEvent e) {

try {
//			oos.close();
//			os.close();
//			serveur.close();
dispose();
}catch(Exception ex){
ex.printStackTrace();
}
}

}




Voilà, à ce stade tu as tous les codes qui me créent des problèmes.

Merci encore pour ton aide
Lez-J
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
19 décembre 2016
22
Oui, donc ça confirme ce que je pense.

Tu as 2 possibilités :
- garder le socket ouvert entre le client et le serveur
- fermer le socket à chaque action de l'utilisateur comme tu le fais actuellement, mais dans ce cas il faut réinstancier un nouveau Socket à chaque fois

Je te conseille la première solution, qui sera plus optimale. Par contre il faudra faire un Thread par connexion, côté serveur. De façon à ne pas bloquer tout le système pour un seul client.
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
19 décembre 2016
22
Par exemple une architecture dans ce goût là (très simplifié) :

package socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;

/**
 * 
 * @author Jonathan GUÉHENNEUX
 * 
 */
public class Client {

/**
 * 
 * @param serveur
 * @param port
 * @throws IOException
 */
public Client(String serveur, int port) throws IOException {

Socket socket = new Socket(serveur, port);

BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));

for (int i = 0; i < 10; i++) {

writer.println("requête du client");
writer.flush();

System.out.println("Serveur : " + reader.readLine());

}

socket.close();

}

/**
 * 
 * @param arguments
 * @throws IOException
 */
public static void main(String... arguments) throws IOException {
new Client("localhost", 1000);
}

}


package socket;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 
 * @author Jonathan GUÉHENNEUX
 * 
 */
public class Serveur {

/**
 * 
 * @param port
 * @throws IOException
 */
public Serveur(int port) throws IOException {

ServerSocket serverSocket = new ServerSocket(port);

System.out.println("serveur démarré");

Socket socket;
Communication communication;

while (true) {

socket = serverSocket.accept();
System.out.println("connexion acceptée");

communication = new Communication(socket);
new Thread(communication).start();

}

}

/**
 * 
 * @param arguments
 * @throws IOException
 */
public static void main(String... arguments) throws IOException {
new Serveur(1000);
}

}


package socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;

/**
 * 
 * @author Jonathan GUÉHENNEUX
 * 
 */
public class Communication implements Runnable {

private BufferedReader reader;
private PrintWriter writer;

/**
 * 
 * @param socket
 * @throws IOException
 */
public Communication(Socket socket) throws IOException {

reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));

}

@Override
public void run() {

String request;

try {

while ((request = reader.readLine()) != null) {

System.out.println("Client : " + request);

writer.println("réponse du serveur");
writer.flush();

}

} catch (IOException ioException) {

ioException.printStackTrace();

}

}

}
Messages postés
66
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 juillet 2013

D'accord, je vois un peu ce que tu me proposes.

je vais le tester en essayant de l'adapter.

Je te tiens au courant dès que je termine le test.

Merci pour tes efforts. A bientôt.


Lez-J