commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Age Bosma (JIRA)" <j...@apache.org>
Subject [jira] Commented: (NET-350) "java.net.SocketException: Broken pipe" when calling "TelnetClient.sendAYT()"
Date Mon, 07 Feb 2011 21:59:57 GMT

    [ https://issues.apache.org/jira/browse/NET-350?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12991643#comment-12991643
] 

Age Bosma commented on NET-350:
-------------------------------

Thanks for your reply and patch. This should at least provide a more stable check to some
extend.

While writing and wait for the exception does the trick in the end, I would have preferred
a 'cleaner' solution, not depending on something to just go wrong after an arbitrary time
span. Though I guess there's not really any other way.

> "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
>         Attachments: sockclient-isconn.diff
>
>
> 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.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message