Chatting Using Java
Sunday, February 17, 2008 1:21:12 PM
// File : ServerChat.java
// Created by : Angga Lingga
import java.net.*;
import java.io.*;
import java.util.*;
import javax.swing.JOptionPane;
public class ServerChat
{
public static Map userList;
public static void main(String[] args) throws IOException
{
userList = new HashMap<String, Socket>();
ServerSocket serverChatSocket = null;
boolean listening = true;
try {
serverChatSocket = new ServerSocket(4417);
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "Could not listen on port: 4417.", "ERROR", JOptionPane.ERROR_MESSAGE);
System.exit(1);
}
while (listening)
{
new ServerThread(serverChatSocket.accept()).start();
userList.put(serverChatSocket.getInetAddress(), serverChatSocket);
System.out.println("Server Chat : " + userList.size());
}
serverChatSocket.close();
}
}
Server Thread
// File : ServerThread.java
// Created by : Angga Lingga
import java.net.*;
import java.io.*;
import javax.swing.*;
import java.util.*;
public class ServerThread extends Thread
{
private Socket serverSocket = null;
private ObjectInputStream input;
private ObjectOutputStream output;
private final static String SEPARATOR = "\\*\\*\\*";
private final static String PUBLIC = "public";
private final static String ONLINE_USER = " has joined the room";
private String[] fromUser;
private String message;
public ServerThread(Socket socket)
{
super("ServerThread");
serverSocket = socket;
message = "";
}
public void run()
{
try
{
System.out.println("Starting Session");
while(true)
{
try
{
output = new ObjectOutputStream(serverSocket.getOutputStream());
output.flush();
input = new ObjectInputStream(serverSocket.getInputStream());
processConnection();
break;
}
catch(EOFException eofe)
{
System.out.println("An Error has Occured, please check it");
}
finally
{
input.close();
output.close();
serverSocket.close();
}
}
System.out.println("Ending Session");
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void processConnection()
{
do
{
try
{
message = (String) input.readObject();
fromUser = message.split(SEPARATOR);
System.out.println("Message from : " + serverSocket.getInetAddress() + " " + fromUser[2]);
message = PUBLIC + "*" + serverSocket.getInetAddress() + "*" + fromUser[2];
System.out.println(ServerChat.userList.size());
sendAllMessageToAllUser(message);
System.out.println("Message to : " + serverSocket.getInetAddress() + " " + message);
System.out.println(fromUser.length);
}
catch(ClassNotFoundException cnfe)
{
System.out.println("Unknown object type received");
}
catch(IOException ioe)
{
System.out.println("An Error has Occured, please check it");
break;
}
}
while(!message.equals("CLIENT >> TERMINATED_APPLICATION"));
}
public void sendAllMessageToAllUser(String Message)
{
try
{
output.writeObject(Message);
output.flush();
}
catch(IOException ioe)
{
System.out.println("An Error has Occured, please check it");
}
}
}
If you want to use the server please use this command:
- javac *.java - java ServerChat











