"java.net.SocketException: Broken pipe" when calling "TelnetClient.sendAYT()"
-----------------------------------------------------------------------------
Key: NET-350
URL: https://issues.apache.org/jira/browse/NET-350
Project: Commons Net
Issue Type: Bug
Components: Telnet
Affects Versions: 2.2
Environment: Ubuntu 10.10 (x32)
Java JDK 1.6.0.22
Reporter: Age Bosma
I'm trying to write some code to have a reliable way to determine if a telnet
connection is still available and not closed on the remote server. Even though
I first call TelnetClient.isConnected(), the followed TelnetClient.sendAYT()
gives me SocketException. The problem occurs when I provide invalid login
credentials on purpose when logging in to the telnet server.
Code snippet:
{code:java}
private boolean isConnected() {
return isConnected(100);
}
private boolean isConnected(int timeOut) {
boolean connected = false;
if (telnetClient.isConnected()) {
try {
connected = telnetClient.sendAYT(timeOut);
} catch (IOException ex) {
Logger.getLogger(ForceLogin.class.getName()).log(Level.SEVERE,
null, ex);
} catch (IllegalArgumentException ex) {
Logger.getLogger(ForceLogin.class.getName()).log(Level.SEVERE,
null, ex);
} catch (InterruptedException ex) {
Logger.getLogger(ForceLogin.class.getName()).log(Level.SEVERE,
null, ex);
}
}
System.out.println("Still connected? " + connected);
return connected;
}
{code}
What I do is execute the following:
{code:java}
succesfulLogin = forceLogin.isConnected();
if (succesfulLogin) {
succesfulLogin = forceLogin.isConnected(1000);
}
{code}
When I try to fail the telnet login (providing invalid credentials), the first
"isConnected()" call sometimes gives me TRUE, sometimes gives me FALSE. When
it's TRUE I want to make sure that we are really still connected using a longer
"TelnetClient.sendAYT()" timeout. This is where the exception occurs.
Resulting exception:
{code:java}
16-Jan-2011 16:44:04 force.ForceLogin isConnected
SEVERE: null
java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at
java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
at org.apache.commons.net.telnet.Telnet._sendAYT(Telnet.java:1095)
at
org.apache.commons.net.telnet.TelnetClient.sendAYT(TelnetClient.java:206)
at force.ForceLogin.isConnected(ForceLogin.java:95)
at force.ForceLogin.main(ForceLogin.java:160)
{code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.