Any time I try to use .ready() or .readLine() on my BufferedReader it just makes my program hang.
I've tried using .ready() instead of .readLine() Commenting out any socket closes Surrounding with try and catch
private void connectButtonActionPerformed(ActionEvent e){
try {
Socket mySocket = new Socket(jServerAddressField.getText(),
Integer.parseInt(jPortField.getText()));
if (jConnectButton.getText() == "Connect") {
jChatBox.append("Connected to Server\n");
jConnectButton.setText("Disconnect");
} else if (jConnectButton.getText() == "Disconnect") {
mySocket.close();
jChatBox.append("Disconnected from server: " + jServerAddressField.getText() + ": " + jPortField.getText() + "\n");
jConnectButton.setText("Connect");
} else
jChatBox.append("Unknown error");
} catch (IOException evt) {
jChatBox.append("Could not connect to Server\n");
}
}
private void sendButtonActionPerformed(ActionEvent e){
Socket mySocket = null;
PrintWriter out = null;
BufferedReader in = null;
String fromServer;
try {
mySocket = new Socket(jServerAddressField.getText(),
Integer.parseInt(jPortField.getText()));
out = new PrintWriter(mySocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
mySocket.getInputStream()));
} catch (UnknownHostException evt) {
System.err.println("Don't know about host: " + jServerAddressField);
System.exit(1);
} catch (IOException evt) {
System.err.println("Couldn't get I/O for the connection to: " + jServerAddressField);
System.exit(1);
}
BufferedReader stdIn = new BufferedReader(
new InputStreamReader(System.in));
try {
System.out.println(mySocket);
System.out.println(mySocket.getOutputStream());
System.out.println(in);
System.out.println(stdIn);
while ((fromServer = in.readLine()) != null) {
System.out.println("Server: " + fromServer);
if (fromServer.equals("Bye."))
break;
fromUser = stdIn.readLine();
if (fromUser != null) {
System.out.println("Client: " + fromUser);
out.println(fromUser);
}
}
out.close();
in.close();
stdIn.close();
mySocket.close();
} catch (IOException ev) {
System.out.println("bad");
}
}
in another method...
jSendButton.addActionListener(this::sendButtonActionPerformed);
I put print statements in to see what was printing.
System.out.println(mySocket);
System.out.println(mySocket.getOutputStream());
System.out.println(in);
System.out.println(stdIn);
Respectively printed out.
Socket[addr=constance.cs.rutgers.edu/128.6.25.89,port=5520,localport=64759]
java.net.SocketOutputStream@38c0ccc7
java.io.BufferedReader@cabb724
java.io.BufferedReader@25204e41