Hilfe bei Client / Server Programm

SymphonyX

Grünschnabel
Hallo.
Ich möchte ein Programm schreiben, mit welchem man ein Kartenspiel (Binokel) übers Internet mit Freunden spielen kann.
Ich habe bereits Programmiererfahrung in Java, allerdings nicht mit Web-Technologien.
Wir hatten neulich in der Verteilten Systeme Vorlesung Client/Server Aufgaben in Java, und dies brachte mich dann auf die Idee, dieses Programm zu schreiben.

Zu meinem Problem:

Im moment habe ich folgendes:

Client:
public class Client {

Socket server;
DataInputStream input;
DataOutputStream output;
private String IpAdress;

public void SetIpAdress(String str){
this.IpAdress = str;
}

public Client() throws IOException {
}

public void send() throws IOException{
String inputString = null;
server = new Socket (IpAdress, 6112);
input = new DataInputStream (new BufferedInputStream (server.getInputStream()));
output = new DataOutputStream (new BufferedOutputStream (server.getOutputStream()));
inputString = MainClass.getInstanz().Read();
output.writeUTF(inputString);
MainClass.getInstanz().Clear();
output.flush();
server.close();
input.close();
output.close();
}
}

Die Ip des anderen wird durch ein User-Interface gesetzt. Als Port habe ich einfach mal den Wc3 Port genommen, weil ich weiss dass der frei ist.

Der Server:
public class Server extends Thread {

ServerSocket server;
DataInputStream input;
DataOutputStream output;
Socket client;

public Server() throws IOException {
while (true){
server = new ServerSocket(6112);
server.setReuseAddress(true);
client = server.accept();
input = new DataInputStream (new BufferedInputStream (client.getInputStream()));
output = new DataOutputStream (new BufferedOutputStream (client.getOutputStream()));
MainClass.getInstanz().Write(input.readUTF());
server.close();
input.close();
output.close();
}
}
}

Dann haben wir das beide gestartet, auf http://www.wieistmeineip.de unsere IP Adressen ausgelesen und jeweils die vom anderen eingegeben. Das komische ist, dass ich ihm einmal meine Nachrichten schicken konnte, und er bekam sie, n anderes mal ging es bei beiden nicht (es kam eine IOException).
Nun meine Fragen:
1. Ist mein ansatz mit den Sockets so richtig?
2. Würde das Ganze auch mit 3 Leuten gehen?
3. Muss man die Ports vllt. zuerst im Router freigeben?
4. Falls ja, geht das auch irgendwie anders (weil dass man erst nen Port freigeben muss is jetz net so toll)
4. Wenn ja, geht das auch anders?
 
Ich hab mir den Code nicht angeguckt (steck ihn bitte in Codetags), kann aber trotzdem etwas dazu sagen.

3. Muss man die Ports vllt. zuerst im Router freigeben?

Ja. Du musst den entsprechenden Port im Router freigeben und an deinen PC weiterleiten.


4. Falls ja, geht das auch irgendwie anders (weil dass man erst nen Port freigeben muss is jetz net so toll)

Meines Wissens nach nicht! Das ist auch gut so. Das übliche Vorgehen wäre dann eine Server-Anwendung, zu welcher alle Clients connecten. Dann braucht lediglich der Server die Ports offen zu haben. Die Clients müssen auch alle nur die Serveradresse kennen.
 
Hi,
vielen vielen Dank für deine schnelle Antwort!
Alles klar, das dachte ich mir schon.
Dann erklärt sich ja auch, wieso mein Kumpel die Nachricht bekam, und ich seine nicht.
Ich hab mich halt gefragt obs bei Windows evtl. offene "default" Ports gibt, aber das ist auch egal.
Danke!
 

Neue Beiträge

Zurück