JAVA : Erreur de Socket sur 127.0.0.1

Fermé
Crimin4l Messages postés 1 Date d'inscription vendredi 29 mars 2013 Statut Membre Dernière intervention 29 mars 2013 - 29 mars 2013 à 03:10
Bonjour je viens de faire un exercice dans java dietel neuvième édition et mon programme n'arrive pas a ce connecter au localhost.

Pour information je suis sur Windows 7 ce pourrait il que j'ai oublié d'ouvrir quelque chose dans les paramètres system ???

Quelqu'un à une idée ???

Voici mon code :

Main :

package clienttest;

import javax.swing.JFrame;

public class ClientTest {

    
    public static void main(String[] args) {
        
        Client application;
        
        if(args.length == 0)
        {
            application = new Client("127.0.0.1");
        }
        else
        {
            application = new Client(args[0]);
        }
        
        application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        application.runClient();
    }
}


Class Client :

package clienttest;

import java.io.EOFException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.net.InetAddress;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class Client extends JFrame {
    
    private JTextField enterField;
    private JTextArea displayArea;
    private ObjectOutputStream output;
    private ObjectInputStream input;
    private String message = "";
    private String chatServer;
    private Socket client;
    
    public Client(String host)
    {
        super("Client");
        
        chatServer = host;
        
        enterField = new JTextField();
        enterField.setEditable(false);
        enterField.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event)
                    {
                        sendData(event.getActionCommand());
                        enterField.setText("");
                    }
                }
                );
        add(enterField, BorderLayout.CENTER);
        
        displayArea = new JTextArea();
        add(new JScrollPane(displayArea), BorderLayout.CENTER);
        
        setSize(300, 150);
        setVisible(true);
    }
    
    public void runClient()
    {
        try
        {
            connectToServer();
            getStreams();
            processConnection();
        }
        catch(EOFException eofException)
        {
            displayMessage("\nClient terminated connection");
        }
        catch(IOException ioException)
        {
            ioException.printStackTrace();
        }
        finally
        {
            closeConnection();
        }
    }
    
    public void connectToServer() throws IOException
    {
        displayMessage("Attempting connection\n");
        
        client = new Socket(InetAddress.getByName(chatServer), 12345);
        displayMessage("Connected to: " + client.getInetAddress().getHostName());
    }
    
    public void getStreams() throws IOException
    {
        output = new ObjectOutputStream(client.getOutputStream());
        output.flush();
        
        input = new ObjectInputStream(client.getInputStream());
        
        displayMessage("\nGot I/O streams\n");
    }
    
    private void processConnection() throws IOException
    {
        setTextFieldEditable(true);
        
        do
        {
            try
            {
                message = (String)input.readObject();
                displayMessage("\n" + message);
            }
            catch(ClassNotFoundException classNotFoundException)
            {
                displayMessage("\nUnknown object type received");
            }
        }while(!message.equals("SERVER>>> TERMINATE"));
    }
    
    private void closeConnection()
    {
        displayMessage("\nClosing connection");
        setTextFieldEditable(false);
        
        try
        {
            output.close();
            input.close();
            client.close();
        }
        catch(IOException ioException)
        {
            ioException.printStackTrace();
        }
    }
    
    private void sendData(String message)
    {
        try
        {
            output.writeObject("CLIENT>>> " + message);
            output.flush();
            displayMessage("\nCLIENT>>> " + message);
        }
        catch(IOException ioException)
        {
            displayArea.append("\nError writong object");
        }
    }
    
    private void displayMessage(final String messageToDisplay)
    {
        SwingUtilities.invokeLater(
                new Runnable() {
                    public void run()
                    {
                        displayArea.append(messageToDisplay);
                    }
                }
                );
    }
    
    private void setTextFieldEditable(final boolean editable)
    {
        SwingUtilities.invokeLater(
                new Runnable() {
                    public void run()
                    {
                        enterField.setEditable(editable);
                    }
                }
                );
    }
}



Class Server :

package clienttest;

import java.io.EOFException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class Server extends JFrame {
    
    private JTextField enterField;
    private JTextArea displayArea;
    private ObjectOutputStream output;
    private ObjectInputStream input;
    private ServerSocket server;
    private Socket connection;
    private int counter = 1;
    
    public Server()
    {
        super("Super");
        
        enterField = new JTextField();
        enterField.setEditable(false);
        enterField.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event)
                    {
                        sendData(event.getActionCommand());
                        enterField.setText("");
                    }
                }
                );
        add(enterField, BorderLayout.NORTH);
        
        displayArea = new JTextArea();
        add(new JScrollPane(displayArea));
        
        setSize(300, 150);
        setVisible(true);
    }
    
    public void runServer()
    {
        try
        {
            server = new ServerSocket(12345, 100);
            
            while(true)
            {
                try
                {
                    waitForConnection();
                    getStreams();
                    processConnection();
                }
                catch(EOFException eofException)
                {
                    displayMessage("\nServer terminated connection");
                }
                finally
                {
                    closeConnection();
                    ++counter;
                }
            }
        }
        catch(IOException ioException)
        {
            ioException.printStackTrace();
        }
    }
    
    private void waitForConnection() throws IOException
    {
        displayMessage("Waitin for connection\n");
        connection = server.accept();
        displayMessage("Connection " + counter + " received from: " + connection.getInetAddress().getHostName());
    }
    
    private void getStreams() throws IOException
    {
        output = new ObjectOutputStream(connection.getOutputStream());
        output.flush();
        
        input = new ObjectInputStream(connection.getInputStream());
        
        displayMessage("\nGot I/O streams\n");
    }
    
    private void processConnection() throws IOException
    {
        String message = "Connection sucessful";
        sendData(message);
        
        setTextFieldEditable(true);
        
        do
        {
            try
            {
                message = (String)input.readObject();
                displayMessage("\n" + message);
            }
            catch(ClassNotFoundException classNotFoundException)
            {
                displayMessage("\nUnknown object type received");
            }
        }while(!message.equals("CLIENT>>> TERMINATE"));
    }
    
    private void closeConnection()
    {
        displayMessage("\nTerminating connection\n");
        setTextFieldEditable(false);
        
        try
        {
            output.close();
            input.close();
            connection.close();
        }
        catch(IOException ioException)
        {
            ioException.printStackTrace();
        }
    }
    
    private void sendData(String message)
    {
        try
        {
            output.writeObject("SERVER>>> " + message);
            output.flush();
            displayMessage("\nSERVER>>> " + message);
        }
        catch(IOException ioException)
        {
            displayArea.append("\nError writong object");
        }
    }
    
    private void displayMessage(final String messageToDisplay)
    {
        SwingUtilities.invokeLater(
                new Runnable() {
                    public void run()
                    {
                        displayArea.append(messageToDisplay);
                    }
                }
                );
    }
    
    private void setTextFieldEditable(final boolean editable)
    {
        SwingUtilities.invokeLater(
                new Runnable() {
                    public void run()
                    {
                        enterField.setEditable(editable);
                    }
                }
                );
    }
}


Merci d'avance ;)
A voir également: