marți, 5 iunie 2012

Server

package pack1;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

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

@SuppressWarnings("serial")
public class ClientGui extends JFrame {
   
    SimpleClient client;
   
    private JScrollPane scrollPane;
    private JTextArea text;
    private JTextField inputField;
   
    public ClientGui() {
        super("Client");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
       
        init();
        setPreferredSize(new Dimension(500, 400));
        pack();
        setLocationRelativeTo(null);
       
        setVisible(true);
       
        client = new SimpleClient(this);
        client.sendMess("hello");
    }
   
    private void init() {
        text = new JTextArea();
        text.setEditable(false);
       
        scrollPane = new JScrollPane(text);       
        add(scrollPane);
       
        inputField = new JTextField();
        inputField.addKeyListener(new KeyListener() {

            public void keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                    client.sendMess(inputField.getText());
                    inputField.setText("");
                }
            }

            public void keyReleased(KeyEvent e) {
            }
            public void keyTyped(KeyEvent e) {
            }
        });
        add(inputField, BorderLayout.SOUTH);
    }
   
    public static void main(String[] args) {
        new ClientGui();
    }
   
    public void addBoardMess(String mess) {
        text.append(mess + "\n");
        text.setCaretPosition(text.getText().length());
    }
}
...................................
package pack1;

import java.io.IOException;

import java.net.ServerSocket;

import java.net.Socket;

public class MultiServer {
   
    private ServerGui gui;

    public MultiServer(ServerGui g) throws IOException {
        gui = g;

        ServerSocket serverSocket = null;

        try {

            serverSocket = new ServerSocket(9999);

        } catch (IOException e) {

//            System.err.println("Could not listen on port: 9999.");
            gui.writeMess("Could not listen on port: 9999.");

            System.exit(-1);

        }

//        System.out.println("wait for clients");
        gui.writeMess("wait for clients");

        while (true) {

            try {

                Socket clientSocket = serverSocket.accept();
                gui.writeMess("new client connected");
                new ServerClientThread(clientSocket, gui);

            } catch (Exception e) {

                e.printStackTrace();

                break;

            }

        }

        serverSocket.close();

    }

}
.....................
package pack1;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.Socket;

public class ServerClientThread extends Thread {
   
    private ServerGui gui;

    private Socket socket = null;

    public ServerClientThread(Socket socket, ServerGui g) {
        gui = g;

        this.socket = socket;

        start();

    }

    public void run() {

//        System.out.println("start new client thread");
        gui.writeMess("start new client thread");

        try {

            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

            BufferedReader in = new BufferedReader(new InputStreamReader(socket

            .getInputStream()));

            String inputLine;

            while (true) {

                try {

                    inputLine = in.readLine();
                    gui.writeMess("input from client : " + inputLine);                   

                    out.println("[" + inputLine + "]");

                    if (inputLine.compareToIgnoreCase("bye") == 0) {

//                        System.out.println("client went off");
                        gui.writeMess("client went off");

                        break;

                    }

                } catch (Exception e) {

//                    System.out.println("client diconnected");
                    gui.writeMess("client diconnected");

                    break;

                }

            }

            out.close();

            in.close();

            socket.close();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

}
...................................
package pack1;

import java.awt.Dimension;
import java.io.IOException;

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

@SuppressWarnings("serial")
public class ServerGui extends JFrame {
   
    private JTextArea text;   
    private JScrollPane scrollPane;
   
    public ServerGui() {
        super("Server");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
       
        init();
        setPreferredSize(new Dimension(500, 400));
        pack();
       
        setLocationRelativeTo(null);       
        setVisible(true);
       
        try {
//            new SimpleServer(this);
            new MultiServer(this);
        } catch (IOException e) {
//            e.printStackTrace();
            writeMess("Error : " + e.getMessage());
        }
    }
   
    private void init() {
        text = new JTextArea();
        text.setEditable(false);
       
        scrollPane = new JScrollPane(text);
        add(scrollPane);
    }
   
    public void writeMess(String mess) {
        text.append(mess + "\n");
        text.setCaretPosition(text.getText().length());
    }
   
    public static void main(String[] args) {
        new ServerGui();
    }
}
.....................................
package pack1;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.Socket;

import java.net.UnknownHostException;

public class SimpleClient extends Thread {

    Socket echoSocket = null;

    PrintWriter out = null;

    BufferedReader in = null;
   
    private ClientGui gui;

    public SimpleClient(ClientGui g) {
        gui = g;
        try {

            echoSocket = new Socket("localhost", 9999);

            out = new PrintWriter(echoSocket.getOutputStream(), true);

            in = new BufferedReader(new InputStreamReader(echoSocket

            .getInputStream()));
           
            start();

        } catch (UnknownHostException e) {

            System.err.println("Could not connect to server");

            System.exit(1);

        } catch (IOException e) {

            System.err.println("Couldn't get I/O for server conection.");

            System.exit(1);

        }
    }

    public static void main(String[] args) throws IOException {

        // while ((userInput = stdIn.readLine()) != null) {
        //
        // try {
        //
        // out.println(userInput);
        //
        // System.out.println(in.readLine());
        //
        // if (userInput.compareToIgnoreCase("bye") == 0) {
        //
        // break;
        //
        // }
        //
        // } catch (Exception e) {
        //
        // System.out.println("connection losed: " + e.getMessage());
        //
        // break;
        //
        // }
        //
        // }

    }

    public void close() {
        try {
            out.close();

            in.close();

            echoSocket.close();
        } catch (IOException e) {
            // TODO
            e.printStackTrace();
        }
    }
   
    public void sendMess(String mess) {
        out.println(mess);
    }

    @Override
    public void run() {
        try {
            while (true) {
                String inline = in.readLine();
                if (inline != null && inline.length() > 0) {
                    //TODO
                    gui.addBoardMess(inline);
                }
                try {
                    Thread.sleep(200);
                } catch (InterruptedException e) {
//                e.printStackTrace();
                }
            }
        } catch (IOException e) {
//            e.printStackTrace();
            gui.addBoardMess("connection closed");
        }
    }

}

Niciun comentariu:

Trimiteți un comentariu