Instant Messaging Program
I want to try to make an instant messaging program. I'm having problems with it, and was wondering if someone could help me.
View class:
Code:
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class View extends JFrame implements ActionListener
{
Client myClient;
Server myServer;
private String myMessage;
private JTextField myMessageTextField;
private JTextField mySendMessageTextField;
private JButton myEnterButton;
private boolean isClient;
public View(boolean isClient)
{
this.isClient = isClient;
if(isClient)
{
myClient = new Client(this);
}
else
{
myServer = new Server(this);
}
Container contentPane = this.getContentPane();
this.setTitle("Instant Messaging");
this.setLayout(new GridLayout(3, 1));
this.setSize(300, 300);
this.setLocationRelativeTo(null);
myMessageTextField = new JTextField();
myMessageTextField.setEditable(false);
contentPane.add(myMessageTextField);
mySendMessageTextField = new JTextField();
contentPane.add(mySendMessageTextField);
myEnterButton = new JButton("Send");
myEnterButton.addActionListener(this);
contentPane.add(myEnterButton);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
public String getText()
{
return mySendMessageTextField.getText();
}
public void setMessage(String fromServer)
{
myMessage += "\n" + fromServer;
myMessageTextField.setText(myMessage);
}
@Override
public void actionPerformed(ActionEvent e)
{
if(e.getSource().equals(myEnterButton));
{
if(isClient)
{
myClient.setText(
this.mySendMessageTextField.getSelectedText());
}
else
{
myServer.setText(
this.mySendMessageTextField.getSelectedText());
}
}
}
}
Client class:
Code:
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 Client implements Runnable
{
Socket myClientSocket;
PrintWriter out;
BufferedReader in;
String fromServer;
String fromUser;
View myView;
Thread myThread;
public Client(View aView)
{
try
{
myClientSocket = new Socket("JordanS", 4444);
out = new PrintWriter(myClientSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(myClientSocket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Don't know about host: taranis.");
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to: taranis.");
System.exit(1);
}
myView = aView;
this.start();
}
public void start()
{
myThread = new Thread(this);
myThread.start();
}
public void stop()
{
myThread = null;
}
public static void main(String[] args)
{
View aView = new View(true);
}
@Override
public void run()
{
while(true)
{
try
{
if((fromServer = in.readLine()) != null)
{
myView.setMessage(fromServer);
}
String sendText = this.getText();
if (sendText != "");
{
out.println(fromUser);
fromUser = "";
}
}
catch (IOException e)
{
this.closeConnection();
}
}
}
private String getText()
{
return fromUser;
}
public String setText(String aMessage)
{
return fromUser;
}
private void closeConnection()
{
try
{
out.close();
in.close();
myClientSocket.close();
System.exit(0);
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Server Class:
Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
public class Server implements Runnable
{
ServerSocket myServerSocket;
PrintWriter out;
BufferedReader in;
String fromServer;
String fromUser;
View myView;
Socket clientSocket;
Thread myThread;
public Server(View aView)
{
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(4444);
} catch (IOException e) {
System.err.println("Could not listen on port: 4444.");
System.exit(1);
}
clientSocket = null;
try {
clientSocket = serverSocket.accept();
} catch (IOException e) {
System.err.println("Accept failed.");
System.exit(1);
}
try {
out = new PrintWriter(clientSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
clientSocket.getInputStream()));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
myView = aView;
this.start();
}
public void start()
{
myThread = new Thread(this);
myThread.start();
}
public void stop()
{
myThread = null;
}
public static void main(String[] args)
{
View aView = new View(false);
}
@Override
public void run()
{
while(true)
{
try
{
if((fromServer = in.readLine()) != null)
{
myView.setMessage(fromServer);
}
String sendText = this.getText();
if (sendText != "");
{
out.println(fromUser);
fromUser = "";
}
}
catch (IOException e)
{
System.exit(0);
}
try
{
Thread.sleep(0);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
private String getText()
{
return fromUser;
}
public String setText(String aMessage)
{
return fromUser;
}
private void closeConnection()
{
try
{
out.close();
in.close();
clientSocket.close();
myServerSocket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}