E
Eqbal Z
I am using a simple client and server using sockets and displaying
some dialogs using JOptionPane on the client side. The problem is that
the application hangs after doing everything correctly (meaning it
does not exit).
Below is the code I use. I have not used swing before so maybe I am
missing something?
import java.net.*;
import java.io.*;
import javax.swing.*;
public class NIMSwingClient extends JFrame {
public static void main(String [] args) {
if (args.length != 2){
System.out.println("Usage: java NIMClient host port");
System.exit(1);
}
try {
Socket server = new Socket(args[0],Integer.parseInt(args[1]));
JFrame frame = new JFrame("NIM Game Client");
//frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//frame.setVisible(true);
JOptionPane.showMessageDialog(frame, "Welcome to NIM
game!","NIM Game", JOptionPane.INFORMATION_MESSAGE);
BufferedReader fromServer = new BufferedReader(new
InputStreamReader(server.getInputStream()));
PrintWriter toServer = new
PrintWriter(server.getOutputStream(),true);
String serverMsg;
String playerMsg;
String playerName;
// get player name
serverMsg = fromServer.readLine();
playerName = JOptionPane.showInputDialog(frame, serverMsg,
"NIM Game",JOptionPane.PLAIN_MESSAGE);
toServer.println(playerName);
// start playing
while ((serverMsg = fromServer.readLine()) != null) {
if ("Incorrect Choice.".equals(serverMsg)) {
JOptionPane.showMessageDialog(frame, serverMsg, serverMsg,
JOptionPane.WARNING_MESSAGE);
continue;
}
if ("Game Over!".equals(serverMsg)) {
String title = serverMsg;
serverMsg += "\n" + fromServer.readLine();
JOptionPane.showMessageDialog(frame, serverMsg, title,
JOptionPane.INFORMATION_MESSAGE);
break;
}
playerMsg = JOptionPane.showInputDialog(frame, serverMsg,
"NIM Game - Pick token",JOptionPane.PLAIN_MESSAGE);//input.readLine();
toServer.println(playerMsg);
}
fromServer.close();
toServer.close();
server.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}
some dialogs using JOptionPane on the client side. The problem is that
the application hangs after doing everything correctly (meaning it
does not exit).
Below is the code I use. I have not used swing before so maybe I am
missing something?
import java.net.*;
import java.io.*;
import javax.swing.*;
public class NIMSwingClient extends JFrame {
public static void main(String [] args) {
if (args.length != 2){
System.out.println("Usage: java NIMClient host port");
System.exit(1);
}
try {
Socket server = new Socket(args[0],Integer.parseInt(args[1]));
JFrame frame = new JFrame("NIM Game Client");
//frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//frame.setVisible(true);
JOptionPane.showMessageDialog(frame, "Welcome to NIM
game!","NIM Game", JOptionPane.INFORMATION_MESSAGE);
BufferedReader fromServer = new BufferedReader(new
InputStreamReader(server.getInputStream()));
PrintWriter toServer = new
PrintWriter(server.getOutputStream(),true);
String serverMsg;
String playerMsg;
String playerName;
// get player name
serverMsg = fromServer.readLine();
playerName = JOptionPane.showInputDialog(frame, serverMsg,
"NIM Game",JOptionPane.PLAIN_MESSAGE);
toServer.println(playerName);
// start playing
while ((serverMsg = fromServer.readLine()) != null) {
if ("Incorrect Choice.".equals(serverMsg)) {
JOptionPane.showMessageDialog(frame, serverMsg, serverMsg,
JOptionPane.WARNING_MESSAGE);
continue;
}
if ("Game Over!".equals(serverMsg)) {
String title = serverMsg;
serverMsg += "\n" + fromServer.readLine();
JOptionPane.showMessageDialog(frame, serverMsg, title,
JOptionPane.INFORMATION_MESSAGE);
break;
}
playerMsg = JOptionPane.showInputDialog(frame, serverMsg,
"NIM Game - Pick token",JOptionPane.PLAIN_MESSAGE);//input.readLine();
toServer.println(playerMsg);
}
fromServer.close();
toServer.close();
server.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}