Probleme mit Connection Reset bei Telnet Verbindung

freehawk

Mitglied
Hallo zusammen,
ich habe eine Klasse programmiert, die eine Telnet Verbindung öffnet, zwei Kommandos schickt (ein Kommando und ein Quit) und die Empfangen Lines zurückgibt. Nun kommt es immer wieder zu Connection Resets. Vermutlich weil die Verbindung schon weg ist bevor der Reader gelesen hat. Ich habe gedacht, da ich einen Buffered Reader verwende müsste das doch gehen. Ich stehe gerade auf dem Schlauch und komme nicht mehr weiter. Könntet ihr mir einen kleinen Wink mit dem Zaunpfahl geben?

Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.util.ArrayList;


public class TelnetConnection
{
    private String ipAdress;
    private int ipPort;
    private String passWord;
    private boolean connectionParameter = false;
    private Debug debug;
   
    private int timeOut = 200;
   
    private Socket socket = null;
    private PrintStream out = null;
    private BufferedReader in = null;
   
    public TelnetConnection ( String ipAdress , int ipPort , String passWord , Debug debug )
    {
        // Verbindungsparameter muessen uebergeben worden sein
        if ( ! ipAdress.equals("") && ipPort != 0 )
        {
            this.ipAdress = ipAdress;
            this.ipPort = ipPort;
            this.passWord = passWord;
            this.debug = debug;
           
            debug.print ( 2 , "Connection Parameter richtig uebergeben" );
           
            this.connectionParameter = true;
        }
        else
        {
            this.connectionParameter = false;
        }
    }
           
    public ArrayList<String> send ( String command )
    {
        ArrayList<String> lines = new ArrayList<String>();
       
        if ( this.connectionParameter == true )
        {
            try
            {
                // Socket Verbindung aufbauen und Streams aufbauen
                this.socket = new Socket ( this.ipAdress , this.ipPort );
                this.socket.setSoTimeout ( this.timeOut );
               
                this.out = new PrintStream ( socket.getOutputStream() );
                this.in = new BufferedReader ( new InputStreamReader ( socket.getInputStream() ) );
                               
                debug.print ( 2 , "Telnetverbindung geoeffnet!" );
            }
            catch ( NullPointerException e )
            {
                debug.print ( 1 , "Telnetverbindung konnte nicht geoeffnet werden: " + e.getMessage() );
            }
            catch ( IOException e )
            {
                debug.print ( 1 , "Telnetverbindung konnte nicht geoeffnet werden: " + e.getMessage() );
            }
           
            String line = "";
           
            // Kurz warten nach dem Öffnen vor dem Schreiben
            try
            {
                Thread.sleep(10);
            }
            catch ( InterruptedException e1 )
            {
                debug.print ( 3 , "schlafen ging nicht: " + e1.getMessage() );
            }       
           
            // Kommando rausschreiben und Verbindung schliessen
            debug.print ( 2 , "Kommando absetzten: " + command );
            out.println ( command + "\r\nquit\r\n");
           
            // Kurz warten nach dem Schreiben vor dem Lesen
            try
            {
                Thread.sleep(10);
            }
            catch ( InterruptedException e1 )
            {
                debug.print ( 3 , "schlafen ging nicht: " + e1.getMessage() );
            }
           
            while(true)
            {
                try
                {
                    // Einlesen der Rueckgabe
                    line=in.readLine();

                    debug.print( 3 , "gelesen ueber Telnet: " + line );

                    // Wenn null kommt ist die Verbindung geschlossen
                    if ( line == null )       
                    {
                        debug.print( 3 , "Alle Lines eingelesen" );

                        break;
                    }
                    else
                    {
                        // Ergebnis uebernehmen
                        lines.add ( line );
                    }
                }
                catch ( IOException e )
                {
                    // Oder nach Read timed out auch weitergehen
                    if ( ! e.getMessage().equals("Read timed out") )
                    {
                        debug.print ( 3 , "Es konnte nicht gelesen werden IO: " + e.getMessage() );
                    }
                    else
                    {
                        debug.print( 3 , "Timeout beim Lesen --> Lesen gewollt abbrechen! IO" );
                    }               
                    break;
                }
                catch ( NullPointerException e)
                {
                    // Oder nach Read timed out auch weitergehen
                    if ( ! e.getMessage().equals("Read timed out") )
                    {
                        debug.print ( 3 , "Es konnte nicht gelesen werden NP: " + e.getMessage() );
                    }
                    else
                    {
                        debug.print( 3 , "Timeout beim Lesen --> Lesen gewollt abbrechen! NP" );
                    }               
                    break;
                }
            }

            try
            {
                // Verbindung schliessen
                in.close();
                out.close();
                socket.close();
                debug.print ( 2 , "Telnetverbindung geschlossen!" );
            }
            catch ( IOException e )
            {
                debug.print ( 2 , "Telnetverbindung konnte nicht geschlossen werden!" );
            }
            catch ( NullPointerException e )
            {
                debug.print ( 2 , "Telnetverbindung konnte nicht geschlossen werden!" );
            }
           
        }
        // Ergebnis zurueckgeben
        return lines;
    }
   
}

Jetzt könnte man natürlich sagen, schicke erst das Kommando, lies dann die Zeilen und schicke dann das quit. Problem dabei ist, dass der Server bei erfolgreichen Kommandos keine Antwort gibt und ich dann quasi das Bye beim Quit als Erfolg auswerte....

Danke

Gruß
Markus
 

JuKu

Top Contributor
Wenn du die Verbindung sofort nach dem Senden schließt, kann natürlich auch nichts mehr vom Server gelesen werden!
Außerdem ist nach dem Write evtl. ein flush() notwendig / hilfreich.
Und ersetze das "\r\n" mal durch ein "\n", das sollte meines Wissens reichen.
Deinen Code habe ich jetzt allerdings nicht getestet.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
platofan23 Probleme mit Socket bei Android Studio? Netzwerkprogrammierung 22
J Probleme mit Multicast über IPv6, DatagramChannel Netzwerkprogrammierung 1
Niggo_ Probleme mit Java Mail Netzwerkprogrammierung 14
K Probleme bei HTML-Mail-Abruf mit IMAP bei 1und1 Netzwerkprogrammierung 2
L Socket SSLServer Probleme Netzwerkprogrammierung 0
H Probleme mit UDP Netzwerkprogrammierung 0
F Server/Client Probleme Netzwerkprogrammierung 3
R Probleme mit JMS Netzwerkprogrammierung 1
A Probleme beim Klassen-Import von sun.misc. ... Netzwerkprogrammierung 19
M RMI RMI Probleme zwischen Client und Server Netzwerkprogrammierung 5
B Probleme beim ersten Netzwerkprogramm Netzwerkprogrammierung 3
M Probleme mit FTP Netzwerkprogrammierung 19
windl URLConnection unter 1.7 macht Probleme Netzwerkprogrammierung 14
Z Socket Probleme beim Senden und Empfangen Netzwerkprogrammierung 5
Z Probleme beim Senden von Nachrichten an den Server Netzwerkprogrammierung 9
Maxim6394 Probleme bei Messenger Netzwerkprogrammierung 16
I Socket UDP Hole Punching bereitet Probleme Netzwerkprogrammierung 14
C Socket Probleme beim Lesen und Schreiben aus/in einen Socket Netzwerkprogrammierung 2
S HTTP Probleme mit POST-Befehl Netzwerkprogrammierung 2
R FTPS - Probleme mit FTPSClient Netzwerkprogrammierung 2
S Probleme mit XMLEncoder/XMLDecoder Netzwerkprogrammierung 2
D Server - Client Probleme Netzwerkprogrammierung 9
Weiti HTTP Zertifikat-Probleme - InstallCert.java Netzwerkprogrammierung 2
M Socket Probleme mit einfacher Socketverbindung Netzwerkprogrammierung 3
H Probleme mit GUI (RMI) Netzwerkprogrammierung 6
T RMI Probleme mit RMI-Server Netzwerkprogrammierung 4
J Probleme bei RSA mit byte[] bei Versand über RMI Netzwerkprogrammierung 2
T FTP Probleme mit Passiv und Binary Mode Netzwerkprogrammierung 3
J Probleme mit Threads (Client terminiert) Netzwerkprogrammierung 4
S Socket SocketServer und Client machen Probleme Netzwerkprogrammierung 6
B Server / Client Anwendung, Client GUI Probleme Netzwerkprogrammierung 11
F RMI probleme Netzwerkprogrammierung 3
D Probleme bei mehreren Clients uns Senden von Messages Netzwerkprogrammierung 16
E jPcap Probleme Netzwerkprogrammierung 3
B HTTP Probleme mit HttpClient? Netzwerkprogrammierung 2
T Probleme mit Jpcap Netzwerkprogrammierung 18
P Probleme mit OutputStream Netzwerkprogrammierung 7
P Probleme beim weiter senden von Datein Netzwerkprogrammierung 10
B Probleme mit FTP verbindung Netzwerkprogrammierung 22
L Probleme bei Chatserver Netzwerkprogrammierung 6
A Probleme mit kleinem Netzwerk Programm Netzwerkprogrammierung 30
S Probleme beim senden von Daten per POST Methode an PHP Scrip Netzwerkprogrammierung 5
G Probleme mit SecruityManager + RMI Netzwerkprogrammierung 10
derMartin Probleme mit NNTP Client Netzwerkprogrammierung 2
A Probleme mit Citrix Netzwerkprogrammierung 17
A Probleme mit kleinem Messenger-Programm Netzwerkprogrammierung 4
K RXTXcomm : Install - Probleme Netzwerkprogrammierung 7
R Probleme mit UDP Netzwerkprogrammierung 4
P Probleme bei Chat programm Netzwerkprogrammierung 2
I Probleme mit 'JSSE Samples' von Sun Netzwerkprogrammierung 5
T RMI - Probleme beim Starten des Clients Netzwerkprogrammierung 4
E InetAddress Klasse-Probleme Netzwerkprogrammierung 4
M dateien übertragen, probleme mit versch. Strömen? Netzwerkprogrammierung 4
R Rechte Probleme bei Applets Netzwerkprogrammierung 16
D EA-Exception Network Adapter macht probleme Netzwerkprogrammierung 2
G Probleme mit Firewall beim empfangen von dateien über socket Netzwerkprogrammierung 6
P Probleme mit Input- / Output-Streams Netzwerkprogrammierung 2
V probleme mit dem chat programm Netzwerkprogrammierung 4
F WLAN Probleme (CLIENT-SERVER) Netzwerkprogrammierung 4
J Probleme mit ObjectOutputStream! Netzwerkprogrammierung 15
S Probleme beim Beschränken der Geschwindigkeit Netzwerkprogrammierung 6
M Probleme beim Abfangen von Streams Netzwerkprogrammierung 5
G Fragen/Probleme mit JavaMail Netzwerkprogrammierung 2
N Java-Chat (lauffähig) macht Probleme auf der Konsole Netzwerkprogrammierung 6
P Probleme mit einem Array aus Sockets Netzwerkprogrammierung 2
C Probleme bei Dateiupload mit socket Netzwerkprogrammierung 4
T FTP Chatprogramm probleme Netzwerkprogrammierung 2
C RMI Probleme mit iptables Netzwerkprogrammierung 2
D socket exception + timing probleme Netzwerkprogrammierung 2
G Probleme bei Proxy-Server! Netzwerkprogrammierung 5
S Probleme mit HttpURLConnection Netzwerkprogrammierung 10
D Habe 2 Probleme: Input eingabe und Multi Socket Server Netzwerkprogrammierung 2
x46 Connection reset by peer: socket write error Netzwerkprogrammierung 6
Thalion TCP Connection zu langsam Netzwerkprogrammierung 2
S Client Server Connection Netzwerkprogrammierung 4
C Handle Connection Problem Netzwerkprogrammierung 3
R Socket InputStream readObject > Connection Reset Netzwerkprogrammierung 3
L ssh connection; Zugriff auf 'screen' Prozess Netzwerkprogrammierung 5
C Client connection per Portforwarding auf einen lokalen Serverport Netzwerkprogrammierung 3
M Connection refused? Netzwerkprogrammierung 2
D Connection refused Netzwerkprogrammierung 3
B Client/Server Connection Problem Netzwerkprogrammierung 2
D Socket Socket absichtlich so schließen, dass Gegenseite java.net.SocketException: Connection reset wirft Netzwerkprogrammierung 4
C Socket Connection refused bei Internetverbindung - Welcher Port? Netzwerkprogrammierung 5
K Socket Exception Connection reset Netzwerkprogrammierung 9
VfL_Freak Socket SocketException: Connection reset Netzwerkprogrammierung 11
C Socket Socket: Connection timed out Netzwerkprogrammierung 3
T Empfangen klappt Senden nicht - Connection timed out Netzwerkprogrammierung 12
H java.net.ConnectException: Connection refused Netzwerkprogrammierung 3
Z Socket Connection reset by peer nur per IP nicht über localhost Netzwerkprogrammierung 13
RELAXccc HTTP Connection timed out: connect ?an was kann es liegen? Netzwerkprogrammierung 4
G Exception: Connection reset by peer: socket write error Netzwerkprogrammierung 2
N Socket verliert die Connection. Netzwerkprogrammierung 4
A UCP Connection über Proxy möglich? Netzwerkprogrammierung 7
M RMI - Connection Problem Netzwerkprogrammierung 7
trash HTTP Internet Connection bei Proxy ?! Netzwerkprogrammierung 3
D Client Server Problem, Methode readline() löst SocketException "Connection reset" aus Netzwerkprogrammierung 8
H RMI Connection refused bei RMI-Registry Netzwerkprogrammierung 10
S SSH-Connection - Auto-Vervollständigung mittels TAB Netzwerkprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben