Ich wage mich erstmals an ein Projekt heran, was über Netzwerk kommunizieren soll.
Ich möchte dabei vom Programm aus an mehrere Rechner Daten schicken.
Ich habe dazu folgende Klasse entwickelt, deren Instanzen von einem Objekt in einem Vector gehalten werden:
Die Klasse des Objekts, welches die Instanzen obiger Klasse in einem Vector vorhält hat folgende Methode:
Ich kenne mich mit TCP/IP nicht so aus, aber meine mal gehört zu haben, dass da so lange Pakete gesendet werden, bis die Pakete tatsächlich angekommen sind.
Stimmt das? Wenn ja:
Wenn ich nun beispielsweise 3 Empfänger im Vector habe, wird so, wie ich es konstruiert habe, dann an alle gleichzeitig gesendet, oder muss ich jedes einzelne Senden in einen eigenen Thread packen?
lg Stephan
Ich möchte dabei vom Programm aus an mehrere Rechner Daten schicken.
Ich habe dazu folgende Klasse entwickelt, deren Instanzen von einem Objekt in einem Vector gehalten werden:
Code:
/**
* Erzeugt ein ObjectOutputStream und speichert die benutzte IP Adresse.
*/
private class IPObjectOutputStream {
private ObjectOutputStream objectOutputStream;
private Socket socket;
private String ip;
/**
* @param ip
* Die IP für den ObjecktOutputStream
* @throws UnknownHostException
* @throws IOException
*/
public IPObjectOutputStream(String ip) throws UnknownHostException,
IOException {
this.ip = ip;
socket = new Socket(ip, port);
objectOutputStream = new ObjectOutputStream(socket
.getOutputStream());
}
/**
* Sendet das Spielerereignis an den ObjectOutputStream.
*
* @param spielerEreignis
* Das zu sendende Spielerereignis.
* @throws IOException
*/
public void sende(ZyklusEreignisse zyklusEreignisse) throws IOException {
objectOutputStream.writeObject(zyklusEreignisse);
}
/**
* Liefert die IP des ObjektOutputStreams.
*
* @return Die IP des ObjektOutputStreams.
*/
public String getIP() {
return ip;
}
/**
* Liefert den ObjektOutputStream.
*
* @return Der ObjektOutputStream.
*/
public ObjectOutputStream getObjectOutputStream() {
return objectOutputStream;
}
/**
* Aufräumarbeiten, bevor der garbage collector zuschlägt.
*/
protected void finalize() throws Throwable {
objectOutputStream.close();
socket.close();
}
}
Die Klasse des Objekts, welches die Instanzen obiger Klasse in einem Vector vorhält hat folgende Methode:
Code:
/**
* Sendet das Spielerereignis an alle Netzwerkteilnehmer.
*
* @param spielerEreignis
* Das zu sendende Spielerereignis.
* @throws IOException
*/
public void sende(ZyklusEreignisse zyklusEreignisse) throws IOException {
for (IPObjectOutputStream ipObjectOutputStream : ipObjectOutputStreamVector) {
ipObjectOutputStream.sende(zyklusEreignisse);
}
}
Ich kenne mich mit TCP/IP nicht so aus, aber meine mal gehört zu haben, dass da so lange Pakete gesendet werden, bis die Pakete tatsächlich angekommen sind.
Stimmt das? Wenn ja:
Wenn ich nun beispielsweise 3 Empfänger im Vector habe, wird so, wie ich es konstruiert habe, dann an alle gleichzeitig gesendet, oder muss ich jedes einzelne Senden in einen eigenen Thread packen?
lg Stephan