duminică, 2 septembrie 2012

Lab9-mychat


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.JOptionPane;


public class FirstFrame implements ActionListener{

public FirstFrame(){
Object n= JOptionPane.showInputDialog(null, "Introduceti tipul conexiunii dorite", "Conexiune",
JOptionPane.QUESTION_MESSAGE, null, new Object[] { "Client",
"Server"},"First");
if(n.equals("Client")){
new SimpleClient();

}
if(n.equals("Server")){
try {
new MultiServer();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

@Override
public void actionPerformed(ActionEvent e) {

}

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

public class MultiServer {
private int nr = 0;
private ServerClientThread vector[] = new ServerClientThread[3];

public MultiServer() throws IOException {

ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(2222);
} catch (IOException e) {
System.err.println("Could not listen on port: 9999.");
System.exit(-1);
}
System.out.println("wait for clients");
while (true) {
try {
while(nr==3){
Socket clientSocket = serverSocket.accept();
ServerClientThread t = new ServerClientThread(clientSocket,this);
vector[nr++] = t;}
} catch (Exception e) {
e.printStackTrace();
break;
}
}
serverSocket.close();
}

public void trimiteLaToti(String s) {
int i;
for(i=0; i<this.nr; ++i) {
this.vector[i].sendMessage(s);
}
}
public int getNr() {
return this.nr;
}

public void setNr(int nr) {
this.nr = nr;
}

public ServerClientThread[] getVector() {
return vector;
}

public void setVector(ServerClientThread[] vector) {
this.vector = vector;
}
}
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 PrintWriter out;
private BufferedReader in;
private MultiServer m;
private Socket socket = null;

public ServerClientThread(Socket socket, MultiServer multiServer) {
this.m=multiServer;
try {
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
this.socket = socket;
start();
}

public void run() {
// System.out.println("start new client thread");
try {

String inputLine;
while (true) {
try {
inputLine = in.readLine();
this.m.trimiteLaToti(inputLine);
/* out.println("[" + inputLine + "]"); */
if (inputLine.compareToIgnoreCase("bye") == 0) {
System.out.println("client went off");
break;
}
} catch (Exception e) {
System.out.println("client diconnected");
break;
}
}
out.close();
in.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}

/*
* public void writeMSG(String msg) {
* }
*/

public void sendMessage(String s) {

this.out.println(s);
}
}
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

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

@SuppressWarnings("serial")
public class SimpleClient extends JFrame{
/*MultiServer m;*/
Socket echoSocket = null;
PrintWriter out = null;
BufferedReader in = null;
JTextArea area=new JTextArea(20,20);
JTextField field=new JTextField(20);
public SimpleClient() {
this.add(area,BorderLayout.CENTER);
area.setEditable(false);
this.add(field,BorderLayout.SOUTH);
field.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {
SimpleClient.this.out.println(arg0.getActionCommand());
SimpleClient.this.field.setText("");
}
});
this.pack();
this.setVisible(true);

try {
echoSocket = new Socket("localhost", 2222);
out = new PrintWriter(echoSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(echoSocket
.getInputStream()));
} 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);
}
while (true) {
try {
/* System.out.println("Clienti   "+ m.getNr());*/
this.area.append(in.readLine()+"\n");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}

public class Test {

/**
* @param args
*/
public static void main(String[] args) {

FirstFrame f = new FirstFrame();
}

}

Niciun comentariu:

Trimiteți un comentariu