# Verbindung zwischen 2 Rechnern über ServerSockets nicht möglich



## zzone (9. Okt 2014)

Guten Tag,

ich und ein Studienkollege sollen im Rahmen unseres Studiums ein Spiel programmieren. Bedingung ist hier u.a. ein Multiplayermodus über Netzwerkverbindung o.ä. Dies wollen wir über Sockets bzw. ServerSockets realisieren, da es letztlich möglich sein soll, Objekte (in diesem Fall Hindernisse) auf den anderen Rechner zu senden, damit sie dort angezeigt werden (Diese sollen übersprungen werden). Für einen ersten Test habe ich nun zwei Klassen geschrieben, wo einfach 2 Zahlen multipliziert werden:

Client:


```
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;


public class Client
{
	
	static int a,b;
public static void main( String args[] ) throws IOException
	{
	Socket server = new Socket ( "localhost", 7395 );
	InputStream in = server.getInputStream();
	OutputStream out = server.getOutputStream();
	System.out.println("Verbindung hergestellt.");
	
	a = 5;
	b = 3;
	
	out.write(a);
	out.write(b);
	
	System.out.println("Sende Daten an Server.");
	
	
	int result = in.read();
	System.out.println("Empfange Ergebnis.");
	System.out.println(result);
	server.close();
	}
}
```

sowie Server:


```
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;


public class Server {

	public static void main(String[] args) throws IOException {
		ServerSocket server = new ServerSocket(7395);
		System.out.println("Server gestartet. Warte auf Verbindung...");
		while ( true ) {
			Socket client = server.accept();
			InputStream in = client.getInputStream();
			OutputStream out = client.getOutputStream();
			int zahl1 = in.read(); 
			int zahl2 = in.read();
			
			out.write(zahl1*zahl2);
			client.close();
			//server.close();
		}
	}
}
```

Auf einem Rechner funktioniert das problemlos, also ich starte den Server, und anschließend den Client, so wird das Rechenergebnis korrekt zurückgegeben. Wenn wir nun allerdings den Server von einem Rechner starten, und den Client von einem anderen, wird die Exception geschmissen, dass die Verbindung verweigert wurde (Connection refused). Wir befinden uns beide im selben Netzwerk.


Haben wir etwas übersehen? Oder fehlt sogar noch etwas in den Klassen?


Viele Grüße,

zzone


----------



## Ch4t4r (9. Okt 2014)

Stichwort: Firewall
Auf dem Rechner, zu dem die Verbindung aufgebaut wird (Server) muss der entsprechende Port freigegeben werden. Ich würde euch empfehlen euch in die Grundlagen der netzwerktechnik einzulesen.


----------



## Joose (9. Okt 2014)

Falls außerdem noch nicht bedacht: Der Client verbindet sich nicht mehr zu "localhost" sondern zu IP xxxxx


----------



## zzone (9. Okt 2014)

Vielen Dank an euch beide!

Wir hatten die Ports schon freigegeben, das Problem war "nur" eine falsche IP-Adresse im Client...


----------

