tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
736
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    RipdEaTh RipdEaTh ist offline Mitglied Bronze
    Registriert seit
    Apr 2005
    Beiträge
    36
    Hallo Leute,

    derzeit erstelle ich einen kleinen Message-Server und Clienten. Allerdings bereiten die beiden mir gerade etwas Kopfzerbrechen.

    Wenn ich eine Verbindung über localhost aufbaue, klappt alles wunderbar. Client verbindet sich und die beiden unterhalten sich.
    Nehm ich einen anderen Rechner und versuche über das Netzwerk mich zu verbinden, so bekomme ich eine ConnectionException mit der Meldung "Connection refused".

    Jetzt kommt das lustige. Geh ich von diesem Rechner über Telnet an den Server, so klappt die Verbindung. Wieso aber nicht mit dem Java-Clienten? Kann mir das jemand erklären?

    Ich würde mich über schnelle Antworten freuen.
    Vielen lieben Dank,
    RipdEaTh
     

  2. #2
    MeinerEiner_80 Tutorials.de Gastzugang
    Moin!
    Sofern du alles richtig gemacht hast, wenn IP Adresse, etc soweit alles stimmt, würde ich auf die Firewall tippen, die die Verbindung blockiert...

    *grüssle*
    MeinerEiner
     

  3. #3
    RipdEaTh RipdEaTh ist offline Mitglied Bronze
    Registriert seit
    Apr 2005
    Beiträge
    36
    Hi MeinerEiner_80,

    vielen Dank für deine schnelle Antwort.
    Diese Idee hatte ich auch zuerst, aber die Firewall ist inzwischen deaktiviert. Die kann es also eigentlich nicht mehr sein.
    Zudem macht dies auch nicht unbedingt Sinn, da Telnet sich ja verbinden kann, Java aber nicht, oder?

    Hast du denn sonst noch eine Idee?
    Zum Verbinden habe ich IP-Adresse sowie Hostname ausprobiert. Über Telnet beides kein Problem, über Java klappt keines der beiden.
     

  4. #4
    MeinerEiner_80 Tutorials.de Gastzugang
    Zitat Zitat von RipdEaTh Beitrag anzeigen
    Zudem macht dies auch nicht unbedingt Sinn, da Telnet sich ja verbinden kann, Java aber nicht, oder?
    Da Telnet und deine Applikation aber über verschiedene Ports laufen kann das bei eingeschalteter Firefall durchaus Sinn machen!

    Dann zeig halt mal deinen Code..

    *grüssle*
    MeinerEiner
     

  5. #5
    RipdEaTh RipdEaTh ist offline Mitglied Bronze
    Registriert seit
    Apr 2005
    Beiträge
    36
    Ok, also einmal die Server-Klasse, die den Server startet:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    
        private void startServer() {
            try {
                ivServerSocket = new ServerSocket(ivConfig.getServerPort());
                System.out.println(ivServerSocket.getInetAddress().getHostAddress());
                System.out.println("Server gestartet auf Port " + ivConfig.getServerPort() + "...");
                
                System.out.println("Baue Datenbankverbindung auf...");
                makeDBConnection();
                System.out.println("Datenbankverbindung aufgebaut...");
                
                System.out.println("Server läuft...");
                waitForConnections();
            } catch (IOException e) {
                System.err.println("Der Port " + ivConfig.getServerPort() + " wird bereits verwendet!");
                Log.log(e.getMessage());
            }
        }
     
        private void waitForConnections() {
            while(true) {
                try {
                    Socket client = ivServerSocket.accept();
                    System.out.println("Client verbunden: " + client.toString());
                    
                    new Thread(new Client(ivDBConnection, client)).start();
                    
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }


    Und hier mal der Code, der beim Clienten ausgeführt wird:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
        public boolean connect() {
            
            try {
                ivServer = new Socket(ivHost, ivPort);
                
                ivInputServer = new BufferedReader(new InputStreamReader(ivServer.getInputStream()));
                ivOutputServer = new PrintWriter(ivServer.getOutputStream(), true);
                
                String inputServer = ivInputServer.readLine();
                
                if (inputServer.equals("Please log in")) {
                    return login(ivEMail, ivPassword);
                }
                
                //System.out.println(ivInputServer.readLine());
            } catch (UnknownHostException e) {
                System.err.println("Der Host \"" + ivHost + "\" ist unbekannt!");
            } catch (IOException e) {
                e.printStackTrace();
            } 
        }


    Ich hoffe, dass das reicht. Wenn du noch andere Methoden haben möchtest, sag kurz bescheid

    Ich habs auch zeitweise mal damit versucht, die IP Adresse beim ServerSocket zu definieren, hat aber leider auch keine Besserung gebracht. Was mich eben so irritiert, ist, dass Telnet connecten kann, der Java-Client nicht. Das klingt für mich so nach einem Windows-Problem, oder?
     

  6. #6
    MeinerEiner_80 Tutorials.de Gastzugang
    Ich gehe mal davon aus, dass du mit IP und Port Adressen sicher bist, bzw, das überprüft hast, dass du dich auch auf die IP Adresse und den Port mit dem Client verbindest, auf dem auch der Server gestartet wurde!
    Weiterhin gehe ich auch davon aus, das dein Server problemlos in die waitforConnections() Methode läuft und vorher nicht abbricht.
    Wenn jetzt wirklich die Firewalls auf beiden Rechnern deaktiviert sind und nun der Client bei Zeile 4 die Exception wirft, dann.. hab ich jetzt auchmal keine Idee mehr..
    Eventuell hast du in einem der Codeteile, die du nun nicht gepostet hast einen Fehler, das kann ich natürlich nicht ausschließen.
    Wenn du dir wirklich sicher bist, keinen Fehler gemacht zu haben, könntest du mal diesen ganz simplen Server hier http://www.galileocomputing.de/openb...bcbeb7cae97b63
    ausprobieren (IP Adresse muss natürlich geändert werden). Der sollte nämlich funktionieren..

    *grüssle*
    MeinerEiner
     

  7. #7
    RipdEaTh RipdEaTh ist offline Mitglied Bronze
    Registriert seit
    Apr 2005
    Beiträge
    36
    Ich hab das Problem inzwischen behoben, bin wohl etwas überarbeitet

    Problem war ganz einfach, der Host war falsch. Ich hab zwar immer schön die IP in der Main-Methode geändert, die aber nie aufgerufen. Meine Klasse wurde über eine andere Klasse aufgerufen, wo die ganze Zeit localhost drin stand...

    Vielen Dank an dich MeinerEiner_80
     

Ähnliche Themen

  1. RMI: Client - Server Connection refused
    Von Deemax im Forum Java
    Antworten: 4
    Letzter Beitrag: 04.11.09, 22:24
  2. Connection refused
    Von yigiter im Forum Java
    Antworten: 4
    Letzter Beitrag: 09.08.08, 14:14
  3. Exception bei URL Connection!?
    Von yigiter im Forum Java
    Antworten: 3
    Letzter Beitrag: 18.03.08, 23:45
  4. Connection refused: connect
    Von fleabite im Forum Java
    Antworten: 0
    Letzter Beitrag: 25.11.05, 21:10
  5. Antworten: 6
    Letzter Beitrag: 15.12.03, 10:14