rendered paste bodyimport java.net.*;
import java.io.*;
public class ChatServerHandler extends Thread
{
private Socket client_socket;
private String client_address;
private int port;
private ChatGroup chat_group;
public ChatServerHandler(Socket socket, ChatGroup chat_group)
{
this.chat_group = chat_group;
client_socket = socket;
client_address = client_socket.getInetAddress().getHostAddress();
port = client_socket.getPort();
System.out.println("Client connection from (" + client_address + ", " + port + ")");
}
public void run()
{
try
{
BufferedReader in = new BufferedReader(new InputStreamReader( client_socket.getInputStream()));
PrintWriter out = new PrintWriter( client_socket.getOutputStream(), true );
chat_group.addPerson(client_address, port, out);
processClient(in, out);
chat_group.delPerson(client_address, port);
client_socket.close();
System.out.println("Client (" + client_address + ", " + port + ") connection closed\n");
}
catch(Exception e)
{
System.out.println(e);
}
}
private void processClient(BufferedReader in, PrintWriter out)
{
String line;
boolean done = false;
try
{
while (!done)
{
if((line = in.readLine()) == null)
{
done = true;
}
else
{
System.out.println("Client (" + client_address + ", " + port + "): " + line);
if (line.trim().equals("bye"))
{
done = true;
}
else
{
doRequest(line, out);
}
}
}
}
catch(IOException e)
{
System.out.println(e);
}
}
private void doRequest(String line, PrintWriter out)
{
if (line.trim().toLowerCase().equals("who"))
{
System.out.println("Processing 'who'");
out.println( chat_group.who() );
}
else
{
chat_group.broadcast( "("+client_address+", "+port+"): " + line);
}
}
}