Socket Connection refused bei Internetverbindung - Welcher Port?

chaostheory

Bekanntes Mitglied
Hallo,
ich schreibe momentan ein 2D-Spiel in Java und will einen Mehrspielermodus implementieren. Da ich noch nie etwas mit Netzwerk gemacht habe, habe ich zur Einarbeitung ein einfaches Chat-Programm geschrieben.
Verwende ich als Adresse localhost funktioniert alles wunderbar, nutze ich jedoch meine eigene Internet-Adresse bekomme ich folgende Exception:
Java:
java.net.ConnectException: Connection refused: connect

Liegt das vielleicht an der Firewall? Welchen Port sollte ich verwenden?

Code:
Java:
public void startServer() {
    	print("ServerSocket wird initialisiert...");
        try {
			serverSocket = new ServerSocket(port);
		} catch (IOException e) {e.printStackTrace();}
        print("ServerSocket initialisiert.");
        print("Warte auf Verbindung...");
        Socket socket = null;
		try {
			socket = serverSocket.accept();
		} catch (IOException e) {e.printStackTrace();}
        print("Verbunden mit: " + socket.toString());
        connect(socket);
    }
    
    public void connect(Socket socket) {
        print("Socket wird initialisiert...");
    	this.socket = socket;
        print("Socket initalisiert.");
        print("ObjectOutputStream wird initialisiert...");
		try {
			outputStream = new ObjectOutputStream(socket.getOutputStream());
		} catch (IOException e) {e.printStackTrace();}
        print("ObjectOutputStream initalisiert.");
        print("ObjectInputStream wird initialisiert...");
        try {
			inputStream = new ObjectInputStream(socket.getInputStream());
		} catch (IOException e) {e.printStackTrace();}
        print("ObjectInputStream initialisiert.");
        startListener();
        print("Verbindung ist bereit.");
    }
    
    public void startListener() {
        print("Starte ServerThread...");
        serverThread.start();
        print("ServerThread gestartet.");
    }

    public void hatKnopfVerbindeGeklickt()
    {
    	try {
			connect(new Socket(hatTextfeldAdresse.inhaltAlsText(), port));
		} catch (UnknownHostException e) {e.printStackTrace();}
    	catch (IOException e) {e.printStackTrace();}
    }

    public void hatKnopfStarteServerGeklickt()
    {
    	startServer();
    }
 
Zuletzt bearbeitet:

Ebenius

Top Contributor
Wenn man von außen nach innen will, dann muss man. Der Router muss wissen was er mit der Anfrage machen soll. Deswegen verbinden sich die meisten Chat-Programme ja nicht Punkt-zu-Punkt sondern mit einem Server der die Kommunikation abwickelt.

Ebenius
 

irgendjemand

Top Contributor
ich glaube du hast hier noch einigen nachhol bedarf was grundlegendes network-i/o angeht ...

grundsätzlich gilt : verwendet man ein NAT so muss zu dessen passage eine regel definiert werden ...

moderne NAT in routern arbeiten dabei "halb-automatisch" ...
das heißt : ein client von "innen" kann ohne probleme eine verbindung nach "außen" aufbauen ... will aber jemand von "außen" "rein" wird dies blockiert sofern keine regel für diesen fall definiert wurde

der grund dahinter ist das ein NAT-router in der regel mehr als einen rechner des "inneren LAN" mit EINEM anschluss des "äußeren WAN" verbindet ...

daraus folgt : woher soll der router wissen an welchen der rechner er eine von außen eingehende anfrage leiten soll wenn du ihm das nicht sagst ? -> ergo musst du selbst für jeden dienst der verbindungen von außen zu lassen sollen eine entsprechende regel im NAT hinterlegen ...

wenn sich ein client aber nach draußen verbindet dann weis der router ja von welchem internen rechner diese verbindung stammt und kann die daten dann anhand seiner NAT-tabelle auch wieder an den entsprechenden rechner weiterleiten *hat was mit dem grundlegenden aufbau von IP und TCP zu tun *UDP wird anderst behandelt**

eine TCP verbindung ist grundsätzlich immer bidirektional ... also so lange die verbindung steht können beide seiten daten zum jeweils anderen senden ... dabei garantiert TCP das die daten ankommen ... und auch in der richtigen reihenfolge ...

nimmst du als beispiel einen chat der auf einem vom netz aus erreichbaren server läuft ... so hast du lediglich den fall von client-verbindungen zum server ... der server selbst läuft passiv und wartet nur auf eingehende verbindungen ...
sobald die verbindung vom client zum server steht weis der router : aha ... interner rechner X ist mit server Y auf port Z verbunden *in wirklichkeit ein klein wenig komplizierter* ... und diese informationen werden in der sog. NAT-tabelle gehalten bis die entsprechende verbindung ordnungsgemäß terminiert wird oder aus anderen gründet abbricht *meist timeouts* ...

kommt jetzt allerdings eine verbindungsanfrage von irgendeinem rechner aus dem netz an deinem router an ... und der router hat zu genau dieser verbindung KEINEN NAT eintrag ... so wird die verbindung abgelehnt da das ziel nicht bekannt ist ...


vielleicht beschäftigst du dich erstmal mit grundlegenden network-basics und damit wie man diese in java implementiert ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Connection refused? Netzwerkprogrammierung 2
D Connection refused Netzwerkprogrammierung 3
H java.net.ConnectException: Connection refused Netzwerkprogrammierung 3
H RMI Connection refused bei RMI-Registry Netzwerkprogrammierung 10
A Chatprogramm: Connection refused Netzwerkprogrammierung 4
T RMI RMI und VPN - callbackObject Connection refused Netzwerkprogrammierung 13
0din Connection refused bei localhost?! Netzwerkprogrammierung 7
A RMI java.rmi.ConnectException: Connection refused to host: 1 Netzwerkprogrammierung 4
M chat funktioniert nicht (Connection refused: connect) Netzwerkprogrammierung 3
R ConnectException: Connection refused to host: 192.168.1.4 ? Netzwerkprogrammierung 8
tfa RMI-Problem: Connection refused to host: 127.0.0.2 Netzwerkprogrammierung 4
B RMI & Connection refused to host Netzwerkprogrammierung 12
D Socketverbindung schlägt fehl - Connection refused: connect Netzwerkprogrammierung 4
x46 Connection reset by peer: socket write error Netzwerkprogrammierung 6
F Probleme mit Connection Reset bei Telnet Verbindung Netzwerkprogrammierung 1
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
B Client/Server Connection Problem Netzwerkprogrammierung 2
D Socket Socket absichtlich so schließen, dass Gegenseite java.net.SocketException: Connection reset wirft Netzwerkprogrammierung 4
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
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
S SSH-Connection - Auto-Vervollständigung mittels TAB Netzwerkprogrammierung 4
A Socket Client Server Connection wird aufgebaut aber keine daten geschickt. Netzwerkprogrammierung 5
J Connection Speed Test ohne Applet Netzwerkprogrammierung 5
M FTP-Connection über FTP-Proxy Netzwerkprogrammierung 20
T Wie connection Reset abfragen/abfangen? Netzwerkprogrammierung 10
G InputStreamReader lässt TCP-Connection offen Netzwerkprogrammierung 9
X URL connection Problem Netzwerkprogrammierung 3
sparrow Connection Reset bei Webserver, Java WebStart als Client Netzwerkprogrammierung 9
G Connection zu MySQL ohne ODBC Netzwerkprogrammierung 8
IT-MaD Connection reset by peer: socket write error Netzwerkprogrammierung 2
G httpUnit: Connection timed out Netzwerkprogrammierung 3
lhein java.io.IOException: Unable to establish loopback connection Netzwerkprogrammierung 4
Paule Connection Applet Servlet ohne Socket bzw RMI Netzwerkprogrammierung 2
B Multithreaded Server: Connection reset Netzwerkprogrammierung 4
T JDBC Verbindungsabbruch (Connection reset) Netzwerkprogrammierung 2
M SocketException: Connection reset Netzwerkprogrammierung 10
G MAC / IP Connection Netzwerkprogrammierung 10
M Problem: connection abbrechen und login erkennen Netzwerkprogrammierung 2
M Umlaute gehen bei URL Connection verloren Netzwerkprogrammierung 6
M seltsam: java.net.SocketException: Connection reset Netzwerkprogrammierung 1
B RMI Connection Problem Netzwerkprogrammierung 13
T Dateien wia P2P Connection versenden Netzwerkprogrammierung 2
H java.net.SocketException: Software caused connection abort Netzwerkprogrammierung 4
R FTP Connection zu Server Netzwerkprogrammierung 4
M Ausgangsport für FTp-Connection festlegen??? Netzwerkprogrammierung 3
G Internetverbindung überprüfen ! Netzwerkprogrammierung 9
A aktive Internetverbindung ermitteln Netzwerkprogrammierung 13
B Internetverbindung prüfen unter Windows Netzwerkprogrammierung 1
R DFÜ-Internetverbindung herstellen. nur wie? Netzwerkprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben