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:
sowie Server:
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
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:
Java:
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:
Java:
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