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 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?