|
-
Gui Freeze after re-connect
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.net.*;
import java.io.*;
public class Gui implements WindowListener{
private JFrame fr;
private JMenuBar bar;
private JMenu fileMenu;
private JMenuItem connectItem,disconnectItem,exitItem ;
private JPanel p2;
private JList list;
private JTextArea ta;
private Vector listItem = new Vector();
String message="";
private String logText="";
//*********************************************
private static ServerSocket serverSocket;
private static int port = 5555;
private Socket clientSocket;
private Gui gui;
/****************************************************/
public Gui () {
bar = new JMenuBar();
fileMenu = new JMenu("File");
connectItem = new JMenuItem("Connect");
connectItem.setMnemonic('C');
connectItem.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
openConnection();
fr.repaint();
}
});
disconnectItem = new JMenuItem("Disconnect");
disconnectItem.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent event2)
{
enableConnect();
ta.append("\nTerminating Server Connection");
disconnectServer();
}
});
disconnectItem.setMnemonic('D');
exitItem = new JMenuItem("Exit");
exitItem.setMnemonic('X');
exitItem.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);
}
});
fileMenu.add(connectItem);
fileMenu.add(disconnectItem);
fileMenu.addSeparator();
fileMenu.add(exitItem);
list = new JList(listItem);
list.setFixedCellWidth(100);
list.setFixedCellHeight(16);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setLayoutOrientation(JList.VERTICAL);
list.setVisibleRowCount(10);
ta= new JTextArea(10,30);
ta.setEditable(false);
p2 = new JPanel();
p2.add(new JScrollPane(list) );
p2.add(new JScrollPane(ta) );
bar.add(fileMenu);
launchFrame();
}
private void launchFrame()
{
fr = new JFrame();
fr.addWindowListener(this);
fr.setJMenuBar(bar);
fr.getContentPane().add(p2);
fr.pack();
fr.setVisible(true);
openConnection();
}
public static void main(String args[])
{
Gui gui = new Gui();
}
public void showMessage(String str)
{
message = "\n"+" "+str;
ta.append(message);
}
public void showServerStatusMessage(String str)
{
message = "\n"+" "+str;
ta.append(message);
}
private void enableConnect()
{
connectItem.setEnabled(true);
disconnectItem.setEnabled(false);
}
private void disableConnect()
{
connectItem.setEnabled(false);
disconnectItem.setEnabled(true);
}
//***************
public void openConnection()
{
disableConnect();
ta.append("\nConnecting Server...");
connectServer();
//Cannot Enable this function
getClientConnection();/**************/
}
public void connectServer()
{
try {
serverSocket = new ServerSocket(port);
InetAddress addr = serverSocket.getInetAddress().getLocalHost() ;
String message="\n\t***Server Information***"+
"\n\tHostName : "+addr.getHostName()+
"\n\tIP Address : "+addr.getHostAddress()+
"\n\tPort :"+serverSocket.getLocalPort()+"\n";
System.out.println(message);
showServerStatusMessage(message);
}catch (IOException e){
System.err.println("Error Creating Server Thread.!\nPlease try again.\n"+e);
showMessage("Error Creating Server Thread.!\nPlease try again.\n"+e);
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
public void getClientConnection () {
do {
try {
System.out.println("Waiting for client");
//Problem Started here
clientSocket = serverSocket.accept();/**********/
}catch (IOException e){
System.err.println("ClientSocket Disconnected.");
break;
}
catch(Exception ex){
ex.printStackTrace();
}
}while(!serverSocket.isClosed());
}
public void disconnectServer()
{
try{
serverSocket.close();
}catch(IOException e)
{
showMessage("Failed to disconnect server.");
}
catch(Exception ex)
{
System.out.println("Error");
}
}
//***************************************************************************
public void windowClosing(WindowEvent e) {
fr.dispose();
System.out.println("Server Connection Closed");
disconnectServer();
System.exit(0);
}
public void windowClosed(WindowEvent e) {
}
public void windowOpened(WindowEvent e) {
}
public void windowIconified(WindowEvent e) {
}
public void windowDeiconified(WindowEvent e) {
}
public void windowActivated(WindowEvent e) {
}
public void windowDeactivated(WindowEvent e) {
}
}
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
Forum Rules
|
Top DevX Stories
Easy Web Services with SQL Server 2005 HTTP Endpoints
JavaOne 2005: Java Platform Roadmap Focuses on Ease of Development, Sun Focuses on the "Free" in F.O.S.S.
Wed Yourself to UML with the Power of Associations
Microsoft to Add AJAX Capabilities to ASP.NET
IBM's Cloudscape Versus MySQL
|
Bookmarks