Client verbindet sich nicht

Bitte aktiviere JavaScript!
Hallo Leute, ich habe ein kleines Problem. Und zwar habe ich mein Server-Programm zu Testzwecken auf einem gemieteten vServer laufen. Wenn ich den Client mit dem Server verbinden möchte, kann er aber keine Verbindung aufbauen. Die ip-Adresse ist definitiv richtig und auch mein Programm läuft auf dem Server ohne Probleme. Beide Codes sind unten beigefügt, ich hoffe mir kann einer helfen.

Client:
Code:
public class Test {
    public static void main(String[] args)  {
        try {
            Socket  serv = new Socket("91.200.102.137", 2556);
            
            if(serv.isConnected())  {
                System.out.println("Verbunden");
            }
            
            Scanner scan = new Scanner(new BufferedReader(new InputStreamReader(serv.getInputStream())));
            while(scan.hasNextLine())  {
                System.out.println(scan.nextLine());
            }
            
        } catch (IOException e) {
            e.printStackTrace();
            System.err.println("Nicht verbunden!");
        }
    }
Server:
Code:
public class Server {
    public static void main(String[] args)  {
        try {
            ServerSocket serv = new ServerSocket(2556);
            Socket socket = serv.accept();
            
            PrintWriter w = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
            w.println("Verbindung erfolgreich!");
            w.close();
            serv.close();
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
 
SSH mal auf deinen Server und schaue dir die Liste der offenen TCP Ports an, z.B. mit `netstat -tulpn`.
Wenn du dort deinen Prozess und Port 2556 siehst, kann es noch sein, dass nur auf IPv6 gehorcht wird. Starte mal deinen Server mit `-Djava.net.preferIPv4Stack=true`.
Wenn das alles schon so ist und dein Server auf "0.0.0.0" horcht, schaue mal in iptables, ob eventuell Firewall Regeln gesetzt sind: `sudo iptables -S TCP`.
 
Meine erste Vermutung wäre, dass auf dem Server eine Firewall aktiv ist und daher keine Verbindung möglich ist.
==> Port freischalten und dann geht es.
 
SSH mal auf deinen Server und schaue dir die Liste der offenen TCP Ports an, z.B. mit `netstat -tulpn`.
Wenn du dort deinen Prozess und Port 2556 siehst, kann es noch sein, dass nur auf IPv6 gehorcht wird. Starte mal deinen Server mit `-Djava.net.preferIPv4Stack=true`.
Wenn das alles schon so ist und dein Server auf "0.0.0.0" horcht, schaue mal in iptables, ob eventuell Firewall Regeln gesetzt sind: `sudo iptables -S TCP`.
Ich muss dazu sagen, es ist ein Windows Server. Wo muss ich die Kommandos eingeben? Muss ich was davon mit im Code einbauen? Sorry für die blöden Fragen. Kenne mich nur damit noch nicht super gut aus, da ich das noch am lernen bin.
 
Wenn du dich weder mit Windows Server noch mit Linux auskennst, empfehle ich dir: Kündige den Window Server und wechsle zu einem Linux Server. Die Wahrscheinlichkeit ist dann sehr viel größer, dass du sowohl Hilfe online (Google, StackOverflow, Dokumentationen, ...) als auch hier findest.
 
Wenn du dich weder mit Windows Server noch mit Linux auskennst, empfehle ich dir: Kündige den Window Server und wechsle zu einem Linux Server. Die Wahrscheinlichkeit ist dann sehr viel größer, dass du sowohl Hilfe online (Google, StackOverflow, Dokumentationen, ...) als auch hier findest.
Vielen dank, dann werde ich das versuchen, wenn ich es so nicht zum laufen bekomme
 
Wenn du dich weder mit Windows Server noch mit Linux auskennst, empfehle ich dir: Kündige den Window Server und wechsle zu einem Linux Server. Die Wahrscheinlichkeit ist dann sehr viel größer, dass du sowohl Hilfe online (Google, StackOverflow, Dokumentationen, ...) als auch hier findest.
Also ich widerspreche ungerne aber einen Server ohne KnowHow zu betreiben ist - egal welches System - nicht zu empfehlen!
Es gibt bereits genug Systeme in Bot-Netzen. Da müssen nicht noch mehr Systeme mit schneller Anbindung dazu kommen.

Ich habe lange Zeit einige Root-Server im Einsatz gehabt und ich glaube ich weiß, wovon ich rede. Habe mehr wie eine Attacke mitmachen dürfen auf Grund von irgendwelchen PHP Tools, die Kunden im Einsatz haben wollten. Sowohl auf Linux als auch auf Windows Basis habe ich da einiges mitgemacht.

Weißt du wie die auf einem Windows Server freischalten kann?
Je nach Version heißt das etwas anders. Aber in der Regel findet es sich über den Server Manager (im Tools Menü meine ich) oder in der Systemsteuerung oder im Start Menü unter Administration.
Aber ich habe keinen Windows Server mehr um irgendwas nach zu sehen. (Bin halt seid paar Monaten unter Unix / AIX unterwegs.)
 
Da gebe ich dir völlig Recht und erst keinen Server einzusetzen wäre auch meine Antwort, wenn das denn die Frage gewesen wäre. Die Frage, ob er überhaupt einen Server betreiben sollte ist aber orthogonal zu der Frage, mit welchem Server/Betriebssystem er seine Anwendung bzw. seine Netzwerkprobleme am ehesten zum Laufen bekommt bzw. gelöst bekommt.
 
Mir ging es vor allem um die Äußerung meiner Bedenken. Ohne tiefes Know How halte ich es nun einmal für kritisch. Ob Linux oder Windows ist da eigentlich egal.
 
Ich habe den Server auch nicht lange. Habe ihn mir nur für einen Monat zu Testzwecken geholt, ob das alles so funktioniert, wie ich es mir vorstelle. Trotzdem danke für eure Hilfe, ich schaue dann mal
 
Am Code und dem Kommunikationsverlauf sollte es nicht liegen, den habe ich gerade auf localhost gegengeprüft:
Java:
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Serv1 {
  public static void main(String[] args) {
    try {
      ServerSocket serv = new ServerSocket(2556);
      Socket socket = serv.accept();

      PrintWriter w = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
      w.println("Verbindung erfolgreich!");
      w.close();
      serv.close();

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.util.Scanner;

public class Serv2 {
  public static void main(String[] args) {
    try {
      Socket serv = new Socket("localhost", 2556);

      if (serv.isConnected()) {
        System.out.println("Verbunden");
      }

      Scanner scan = new Scanner(new BufferedReader(new InputStreamReader(serv.getInputStream())));
      while (scan.hasNextLine()) {
        System.out.println(scan.nextLine());
      }

    } catch (IOException e) {
      e.printStackTrace();
      System.err.println("Nicht verbunden!");
    }
  }
}

Wenn Du auf Windows Server startest, sollte er Dich eigentlich fragen ob Du die Kommunikation zulassen möchtest. Das erlauben. Wenn Du es wegklickst, erscheint die Meldung nicht mehr.

Schau auch hier mal https://docs.telerik.com/teststudio/features/testing-types/performance-testing/open-port-on-server
 
Ich habe lange Zeit einige Root-Server im Einsatz gehabt und ich glaube ich weiß, wovon ich rede. Habe mehr wie eine Attacke mitmachen dürfen auf Grund von irgendwelchen PHP Tools, die Kunden im Einsatz haben wollten. Sowohl auf Linux als auch auf Windows Basis habe ich da einiges mitgemacht.
Wir betreiben auch ein paar Server, die Zahl der Angriffe ist krass. Bei einigen Servern blockt die Firewall alles außer ssh und https. Dabei ist ssh ist nur noch mit Public-Key-Auth benutzbar, die Anwendungen laufen alle in Containern hinter einem nginx als Reverse Proxy. Außerdem werkelt fail2ban und besonders auffällige IP-Adressen werden auch mal manuell per statischen Regeln grundsätzlich ausgeschlossen. Kurz: man macht, was man kann, aber ein mulmiges Gefühl bleibt irgendwie immer...
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben