You are on page 1of 16

//ClientGui.

java

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;

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());

//MultiServer.java

import java.io.IOException;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.ArrayList;

public class MultiServer {

private ServerGui gui;

private ArrayList<ServerClientThread> clientList=new ArrayList<ServerClientThread>();


private int counter=1;

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");


ServerClientThread Client = new ServerClientThread(clientSocket,
gui,counter,this);

clientList.add(Client);

counter++;

gui.updateList(clientList);

} catch (Exception e) {

e.printStackTrace();

break;

serverSocket.close();

public void clientClose(ServerClientThread sclient)

clientList.remove(sclient);

gui.updateList(clientList);

public void messageFromClient(ServerClientThread client, String message)

for (ServerClientThread c : clientList) {

c.messagetoClient(client.toString() + " : " + message);

}
// client.messagetoClient(message);

//ClienServerThread.java

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;

private int nr;

private MultiServer server;

private PrintWriter out;

public ServerClientThread(Socket socket, ServerGui g, int nr,

MultiServer servar) {

gui = g;

this.socket = socket;

this.nr = nr;

this.server = servar;
start();

@Override

public String toString() {

return ("client " + nr);

public void run() {

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

gui.writeMess("start new client thread");

try {

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" + nr + ": " + inputLine);

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

server.messageFromClient(this, 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");

// server.clientClose(this);

break;

}
out.close();

in.close();

socket.close();

server.clientClose(this);

} catch (IOException e) {

e.printStackTrace();

public int getNr() {

return nr;

public void setNr(int nr) {

this.nr = nr;

public void messagetoClient(String s) {

out.println(s);

}
//ServerGui.java

import java.awt.BorderLayout;

import java.awt.Dimension;

import java.io.IOException;

import java.util.ArrayList;

import javax.swing.JFrame;

import javax.swing.JList;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

public class ServerGui extends JFrame{

private JTextArea text;

private JScrollPane scrollPane;

private JList lista;

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);

lista=new JList();

add(lista,BorderLayout.WEST);

public void updateList(ArrayList<ServerClientThread> clientList)

lista.setListData(clientList.toArray());

}
public void writeMess(String mess) {

text.append(mess + "\n");

text.setCaretPosition(text.getText().length());

public static void main(String[] args) {

new ServerGui();

//SimpleClient.java

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");

You might also like