Java Socket Programming using swing. instant messaging program.
Server
- import java.io.*;
- import java.net.ServerSocket;
- import java.net.Socket;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.*;
- public class server extends JFrame
- {
- private JTextField userText;
- private JTextArea chatWindow;
- private ObjectOutputStream output;
- private ObjectInputStream input;
- private ServerSocket servers;
- private Socket connection;
- public server()
- {
- super("Chat Messenger");
- userText=new JTextField();
- userText.setEditable(false);
- userText.addActionListener(
- new ActionListener(){
- public void actionPerformed(ActionEvent event){
- sendMessage(event.getActionCommand());
- userText.setText("");
- }
- }
- );
- add(userText,BorderLayout.NORTH);
- chatWindow=new JTextArea();
- chatWindow.setEditable(false);
- add(new JScrollPane(chatWindow));
- setSize(300,150);
- setVisible(true);
- }
- public void startRunning()
- {
- try{
- servers=new ServerSocket(6789,100);
- while(true)
- {
- try{
- waitForConnection();
- setupStreams();
- whileChatting();
- }catch(EOFException eofException)
- {
- showMessage("\n Server Ended the connection! ");
- }
- finally
- {
- closeCrap();
- }
- }
- }catch(IOException ioException)
- {
- ioException.printStackTrace();
- }
- }
- private void waitForConnection() throws IOException
- {
- showMessage("wating for someone for connect ....\n");
- connection=servers.accept();
- showMessage("Now Connected to "+connection.getInetAddress().getHostName());
- }
- private void setupStreams()throws IOException
- {
- output=new ObjectOutputStream(connection.getOutputStream());
- output.flush();
- input=new ObjectInputStream(connection.getInputStream());
- showMessage("\n Streams are now setup !!\n");
- }
- private void whileChatting()throws IOException
- {
- String message="Your are Connected!!!";
- sendMessage(message);
- ableToType(true);
- do
- {
- try
- {
- message=(String)input.readObject();
- showMessage("\n"+message);
- }
- catch(ClassNotFoundException classNotFoundException)
- {
- }
- }
- while(!message.equals("CLIENT - END"));
- }
- private void closeCrap()
- {
- showMessage("\n Clossing Connection!!!!!!!! \n");
- ableToType(false);
- try{
- output.close();
- input.close();
- connection.close();
- }catch(IOException ioException)
- {
- ioException.printStackTrace();
- }
- }
- private void sendMessage(String message)
- {
- try{
- output.writeObject("SERVER - "+ message);
- output.flush();
- showMessage("\n SERVER - " + message);
- }catch(IOException ioException)
- {
- chatWindow.append("\n your can't send Message");
- }
- }
- private void showMessage(final String text)
- {
- SwingUtilities.invokeLater(
- new Runnable()
- {
- public void run()
- {
- chatWindow.append(text);
- }
- }
- );
- }
- private void ableToType(final boolean tof)
- {
- SwingUtilities.invokeLater(
- new Runnable()
- {
- public void run()
- {
- userText.setEditable(tof);
- }
- }
- );
- }
- }
ServerTest
- import javax.swing.JFrame;
- public class ServerTest {
- public static void main(String[] args) {
- server sally=new server();
- sally.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- sally.startRunning();
- }
- }
Client
- import java.io.*;
- import java.net.*;
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- public class Client extends JFrame{
- private JTextField userText;
- private JTextArea chatWindow;
- private ObjectOutputStream output;
- private ObjectInputStream input;
- private String message="";
- private String serverIP;
- private Socket connection;
- public Client(String host)
- {
- super("Client ");
- serverIP=host;
- userText= new JTextField();
- userText.setEditable(false);
- userText.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent event)
- {
- sendMessage(event.getActionCommand());
- userText.setText("");
- }
- });
- add(userText,BorderLayout.NORTH);
- chatWindow=new JTextArea();
- chatWindow.setEditable(false);
- add(new JScrollPane(chatWindow),BorderLayout.CENTER);
- setSize(300,150);
- setVisible(true);
- }
- public void startRunning()
- {
- try{
- connectToServer();
- setupStreams();
- whileChatting();
- }catch(EOFException eofException)
- {
- showMessage("\n Client Treminated connection !!!!!!");
- }catch(IOException ioException)
- {
- ioException.printStackTrace();
- }finally{
- closeCrap();
- }
- }
- private void connectToServer() throws IOException
- {
- showMessage(" Attempting Connection........\n");
- connection=new Socket(InetAddress.getByName(serverIP),6789);
- showMessage("Connected to : " + connection.getInetAddress().getHostName());
- }
- private void setupStreams() throws IOException
- {
- output=new ObjectOutputStream(connection.getOutputStream());
- output.flush();
- input=new ObjectInputStream(connection.getInputStream());
- showMessage("\n your Message are Now good to go !!!!!!!!! \n");
- }
- private void whileChatting() throws IOException
- {
- ableToType(true);
- do{
- try{
- message=(String)input.readObject();
- showMessage("\n " + message);
- }catch(ClassNotFoundException classNotFoundException)
- {
- showMessage("\n Dont know the Object type ");
- }
- }while(!message.equals("SERVER - END"));
- }
- private void closeCrap()
- {
- showMessage("\n Closing crop down");
- ableToType(false);
- try{
- output.close();
- input.close();
- connection.close();
- }catch(IOException ioException)
- {
- ioException.printStackTrace();
- }
- }
- private void sendMessage(String message)
- {
- try{
- output.writeObject("CLIENT - " + message);
- output.flush();
- showMessage("\n CLIENT - " + message);
- }catch(IOException ioException)
- {
- chatWindow.append("\n Something messed up sending message Host !!!!!!");
- }
- }
- private void showMessage(final String m)
- {
- SwingUtilities.invokeLater(
- new Runnable(){
- public void run()
- {
- chatWindow.append(m);
- }
- });
- }
- private void ableToType(final boolean tof)
- {
- SwingUtilities.invokeLater(
- new Runnable(){
- public void run()
- {
- userText.setEditable(tof);
- }
- });
- }
- }
ClientTest
- import javax.swing.JFrame;
- public class ClientTest {
- public static void main(String[] args) {
- Client charlie;
- charlie=new Client("192.168.1.6");
- charlie.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- charlie.startRunning();
- }
- }
package server.app;
ReplyDeleteimport java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Client extends JFrame{
private static final long serialVersionUID = 1L;
private JTextField userText;
private JTextArea chatWindow;
private ObjectOutputStream output;
private ObjectInputStream input;
private String message="";
private String serverIP;
private Socket connection;
public Client(String host) throws Exception
{
super("Client ");
serverIP=host;
String userid = (String)JOptionPane.showInputDialog("Enter ID");
connectToServer();
setupStreams();
output.writeObject(userid);
message=(String)input.readObject();
if(message=="reject" || message.equalsIgnoreCase("reject")){
closeCrap();
}
userText= new JTextField();
userText.setEditable(false);
userText.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event)
{
sendMessage(event.getActionCommand());
userText.setText("");
}
});
add(userText,BorderLayout.NORTH);
chatWindow=new JTextArea();
chatWindow.setEditable(false);
add(new JScrollPane(chatWindow),BorderLayout.CENTER);
setSize(300,150);
setVisible(true);
}
public void startRunning()
{
try{
//connectToServer();
//setupStreams();
whileChatting();
}catch(EOFException eofException)
{
showMessage("\n Client Treminated connection !!!!!!");
}catch(IOException ioException)
{
ioException.printStackTrace();
}finally{
closeCrap();
}
}
private void connectToServer() throws IOException
{
showMessage(" Attempting Connection........\n");
connection=new Socket(InetAddress.getByName(serverIP),8001);
showMessage("Connected to : " + connection.getInetAddress().getHostName());
}
private void setupStreams() throws IOException
{
output=new ObjectOutputStream(connection.getOutputStream());
output.flush();
input=new ObjectInputStream(connection.getInputStream());
showMessage("\n your Message are Now good to go !!!!!!!!! \n");
}
private void whileChatting() throws IOException
{
ableToType(true);
do{
try{
message=(String)input.readObject();
showMessage("\n " + message);
}catch(ClassNotFoundException classNotFoundException)
{
showMessage("\n Dont know the Object type ");
}
}while(!message.equals("SERVER - END"));
}
private void closeCrap()
{
showMessage("\n Closing crop down");
ableToType(false);
try{
output.close();
input.close();
connection.close();
}catch(IOException ioException)
{
ioException.printStackTrace();
}
}
private void sendMessage(String message)
{
try{
output.writeObject("CLIENT - " + message);
output.flush();
showMessage("\n CLIENT - " + message);
}catch(IOException ioException)
{
chatWindow.append("\n Something messed up sending message Host !!!!!!");
}
}
private void showMessage(final String m)
{
SwingUtilities.invokeLater(
new Runnable(){
public void run()
{
chatWindow.append(m);
}
});
}
private void ableToType(final boolean tof)
{
SwingUtilities.invokeLater(
new Runnable(){
public void run()
{
userText.setEditable(tof);
}
});
}
}
package server.app;
import javax.swing.JFrame;
public class ClientTest {
public static void main(String[] args) throws Exception {
Client charlie;
charlie=new Client("localhost");
charlie.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
charlie.startRunning();
}
}
import java.awt.BorderLayout;
ReplyDeleteimport java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Client {
public static Socket socket;
public static String ip = "192.168.137.71";
public static int port = 8005;
public static ObjectOutputStream oos;
public static void main(String[] args) {
String username = JOptionPane.showInputDialog(null, "IP: " + ip + ":" + port);
System.out.println(username);
JTextArea chatWindow;
JTextField userText;
try {
socket = new Socket(ip, port);
oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(username);
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
String response = (String) ois.readObject();
JFrame frame = new JFrame("Client");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
userText = new JTextField();
userText.setEditable(false);
userText.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
sendMessage(event.getActionCommand());
userText.setText("");
}
});
;
frame.add(userText, BorderLayout.NORTH);
chatWindow = new JTextArea();
chatWindow.setEditable(false);
frame.add(new JScrollPane(chatWindow));
frame.setSize(300, 150);
if (response.equalsIgnoreCase("1")) {
chatWindow.append("connected......");
userText.setEditable(true);
do {
try {
response = (String) ois.readObject();
chatWindow.append("\n " + response);
} catch (ClassNotFoundException classNotFoundException) {
chatWindow.append("\n Dont know the Object type ");
chatWindow.append("\n connection close.. ");
}
} while (!response.equals(" END"));
}
if (response.equalsIgnoreCase("0")) {
chatWindow.append("\n refused , not authorised....");
}
if (response.equalsIgnoreCase("2")) {
JOptionPane.showMessageDialog(null, "already connected");
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("dis");
//chatWindow.append("Diss");
//userText.setEditable(false);
//e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void sendMessage(String message) {
try {
oos.writeObject(message);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import java.awt.BorderLayout;
ReplyDeleteimport java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.ArrayList;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Server {
public static ServerSocket server;
public static ArrayList list_sockets = new ArrayList();
public static ArrayList list_client_status = new ArrayList();
public static ArrayList list_data = new ArrayList();
public static DefaultListModel list_client_model;
public static ArrayList list_user = new ArrayList();
public static ArrayList list_verify = new ArrayList();
public static String ip = "";
public static int port = 8005;
public static ObjectOutputStream oos ;
public static void main(String[] args) {
list_verify.add("101");
list_verify.add("102");
list_verify.add("103");
list_verify.add("104");
list_verify.add("105");
try {
ip = InetAddress.getLocalHost().getHostAddress() + ":" + port;
try {
server = new ServerSocket(port, 0, InetAddress.getLocalHost());
System.out.println("Server running in :"+ InetAddress.getLocalHost() +":"+port);
new Thread(accept).start();
} catch (IOException e) {
e.printStackTrace();
}
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
private static Runnable accept = new Runnable() {
@Override
public void run() {
new Thread(send).start();
new Thread(receive).start();
while (true) {
JTextArea chatWindow ;
JTextField userText ;
try {
Socket socket = server.accept();
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
String username = (String) ois.readObject();
oos = new ObjectOutputStream(socket.getOutputStream());
if(list_verify.contains(username)){
if(!list_user.contains(username)){
list_user.add(username);
oos.writeObject("1");
System.out.println("connected to : "+username);
JFrame frame = new JFrame("Server");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
userText = new JTextField();
userText.setEditable(false);
userText.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
sendMessage(event.getActionCommand());
userText.setText("");
}
});
;
frame.add(userText, BorderLayout.NORTH);
chatWindow = new JTextArea();
chatWindow.setEditable(false);
frame.add(new JScrollPane(chatWindow));
frame.setSize(300, 150);
chatWindow.append("connected to : "+ username);
userText.setEditable(true);
do {
try {
username = (String) ois.readObject();
chatWindow.append("\n " + username);
} catch (ClassNotFoundException classNotFoundException) {
chatWindow.append("\n Dont know the Object type ");
chatWindow.append("\n connection close.. ");
}
} while (!username.equals(" END"));
}else {
oos.writeObject("2");
}
}else {
oos.writeObject("0");
}
} catch (IOException e) {
System.out.println("Diss");
//chatWindow.append("Diss");
//userText.setEditable(false);
//e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
};
private static Runnable send = new Runnable() {
@Override
public void run() {
}
};
private static Runnable receive = new Runnable() {
@Override
public void run() {
}
};
public static void sendMessage(String message) {
try {
oos.writeObject(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
package Test;
ReplyDeleteimport java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Client {
public static Socket socket;
public static String ip = "58.2.2.231";
public static int port = 8005;
public static void main(String[] args) {
String username = JOptionPane.showInputDialog(null, "IP: " + ip + ":" + port);
System.out.println(username);
JFrame frame = new JFrame("Client");
try {
socket = new Socket(ip, port);
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(username);
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
String response = (String) ois.readObject();
//JFrame frame = new JFrame("Client");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
JTextField userText = new JTextField();
userText.setEditable(false);
userText.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
sendMessage(oos, event.getActionCommand());
userText.setText("");
}
});
;
frame.add(userText, BorderLayout.NORTH);
JTextArea chatWindow = new JTextArea();
chatWindow.setEditable(false);
frame.add(new JScrollPane(chatWindow));
frame.setSize(300, 150);
if (response.equalsIgnoreCase("1")) {
chatWindow.append("connected......");
userText.setEditable(true);
do {
try {
response = (String) ois.readObject();
chatWindow.append("\n " + response);
} catch (ClassNotFoundException classNotFoundException) {
chatWindow.append("\n Dont know the Object type ");
chatWindow.append("\n connection close.. ");
}
} while (!response.equals(" END"));
}
if (response.equalsIgnoreCase("0")) {
chatWindow.append("\n refused , not authorised....");
}
if (response.equalsIgnoreCase("2")) {
JOptionPane.showMessageDialog(null, "already connected");
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("disconnected from server");
frame.dispose();
// chatWindow.append("Diss");
// userText.setEditable(false);
// e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void sendMessage(ObjectOutputStream oos, String message) {
try {
oos.writeObject(message);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
58.2.2.231:8005
ReplyDelete