# java.net.ConnectException: Connection refused: connect



## PissPain (19. Sep 2014)

Server:

```
package server;

import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

public class Main {
	public static void main(String[] args) throws IOException {
		new Thread(new Runnable() {

			@Override
			public void run() {
				try {
					InetAddress address = InetAddress.getByName("000.000.000.00");
					
					ServerSocket server = new ServerSocket(5655, 0, address);
					Socket socket = server.accept();
					server.close();
					
					System.out.println(socket.getInetAddress());
				} catch(Exception e) {
					e.printStackTrace();
				}
			}
			
		}).start();;
	}
}
```

Client:

```
package server;

import java.io.IOException;
import java.net.Socket;

public class Client {
	public static void main(String[] args) {
		try {
			Socket socket = new Socket("000.000.000.00", 5655);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
```

Etwas sehr Simples, funktioniert halt nicht, gibt immer die selbe Exception:

```
java.net.ConnectException: Connection refused: connect
	at java.net.DualStackPlainSocketImpl.connect0(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
	at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
	at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
	at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
	at java.net.PlainSocketImpl.connect(Unknown Source)
	at java.net.SocksSocketImpl.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at java.net.Socket.<init>(Unknown Source)
	at java.net.Socket.<init>(Unknown Source)
	at server.Client.main(Client.java:9)
```

Habe den Port freigeschalten, Firewall und Antivieren-Programm auch überprüft.
Der Client wurde bei meinem Freund ausgeführt, der Server natürlich bei mir.
Aber bei ihm kommt immer diese Exception, was kann man da machen?
Das Ganze funktioniert aber, wenn ich den Client selber ausführe.

Ich benutze die IP, die in der Konsole mit "ipconfig" ganz oben angegeben wird.

Vielen Dank


----------



## PissPain (19. Sep 2014)

Ich find das immer so komisch...
In jedem Server Tutorial wird nie gezeigt, dass das Ganze auch über zwei Rechner funktioniert.
Immer wird mit dem localhost gearbeitet, aber keiner bekommt es hin, eine Verbindung mit einem anderen PC aufzubringen!
Ich habs zwar auch schon geschafft mit nem Laptop der in dem gleichen Heimnetzwerk ist zu Verbinden,  aber das heißt ja nichts. Nirgends steht etwas darüber, wie man eine ordentliche Verbindung durch das Internet erstellt.

Und es muss ja irgendwie gehen, es gibt genug Programme auf dem PC, wobei man keine Ports oder sonst was freischalten muss...
Z.B. ein Chatprogramm, muss keine Ports freischalten muss nichts machen, es verbindet sich einfach mit einem anderem PC durch das Internet.


----------



## JavaMeister (20. Sep 2014)

Wie sind die ersten 4 Nummern der ip, die du angibst wenn du dich über das Internet verbinden möchtest?

Ist der Port forward im Router korrekt konfiguriert? Wenn ja wie?


----------



## PissPain (20. Sep 2014)

Hallo JavaMeister, 192.1 sind die ersten 4, ein Freund hat mir mal gesagt, dass das mit so einer IP nicht funktionieren kann, dass das  nur irgendeine IP von meinem PC wäre... Aber ich habe auch nichts dazu gefunden, was man da benutzen muss...
Vllt. liegt es auch an einem anderem Problem, aber ich hoffe dass du mir helfen kannst!

Ich weiß leider nicht was du mit dem Port forward meinst. Ich habe ne normale Fritz box, bei der ich in Portfreigaben einen Port (5655) freigeschaltet habe:
Protokoll: TCP ; Port: 5655 ; an IP-Adresse  192.100.000.00 ; an Port 5655.

Vielen Dank


----------



## fLooojava (20. Sep 2014)

:noe:

_Das ist deine private IP welche nur in deinem eigenen kleinen Netzwerk zuhause ansprechbar ist. Private IP-Adressen werden nicht geroutet somit klappt deine Verbindung auch nicht.
_

*Deine öffentliche IP Adresse kannst du a) im Terminal anzeigen lassen b) googeln. *


----------



## PissPain (20. Sep 2014)

Ich habe gerade mal ein wenig gegoogelt.
Ich muss mir jetzt so ein DynDNS-Programm holen, das eine nicht verändernde IP auf eine ständig verändernde IP meines PCs zeigen lässt?
Wenn das so wäre, welche IP muss denn dann in meinem Router eingetragen werden?

Vielen Dank


----------



## JavaMeister (20. Sep 2014)

Du brauchst kein DynDNS.

In deinem Router musst du PortForwading konfigurieren. Externer Port 23244 (Beispiel) wird an PC 192.168.x.y Interner Port (idealerweise der gleich, muss aber nicht) 23244. 

Deine externe IP Adresse kannst du bei den meisten Routern dort ablesen oder du gehst auf "wasistmeineipadresse.de" oder so.

Die externe IP adresse teilst du deinem Kollegen mit, er muss diese im Programm angeben. (ALTERNATIV: DynDNS Adresse: Aber zum Testen wohl eher unnötig)


----------



## PissPain (20. Sep 2014)

Jetzt funktioniert das noch nicht einmal bei mir.

Konfiguration:


In der Server-Klasse ist die 192.168 IP und im Client ist die externe IP (87.).

Exception im Client:

```
java.net.ConnectException: Connection timed out: connect
	at java.net.DualStackPlainSocketImpl.connect0(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
	at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
	at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
	at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
	at java.net.PlainSocketImpl.connect(Unknown Source)
	at java.net.SocksSocketImpl.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at java.net.Socket.<init>(Unknown Source)
	at java.net.Socket.<init>(Unknown Source)
	at server.Client.main(Client.java:9)
```

-- Alle ports wurden auch auf 56556 geändert!


----------



## arilou (23. Sep 2014)

Das ist kein Java-Problem, bitte informiere dich über IP-Adressen (z.B. bei Wikipedia).
Du solltest schon etwas über Netzwerke, insbesondere über TCP/IP, wissen, bevor du Netzwerk-Programmierung versuchst.


----------

