Hallo Leute,
ich mach grad meine ersten Schritte in der Netzwerkprogrammierung. Prinzipiell funktioniert soweit alles und bin ganz zufrieden. Allerdings habe ich heute etwas festgestellt, was ich nicht ganz verstehe.
Hier mal kurz ein bisschen Code. Ich hab auf dem Server einen Clientaccepter, der auf clients wartet:
Der Clienthandler holt sich dann im Constructor die Streams:
Danach wird direkt die listen methode gestartet, die dann auf input wartet.
Meine Client connected wie folgt:
Bisher hatte ich überhaupt keine Probleme und es funktioniert die Netzwerkübertragung.
Jetzt wollte ich gleich zu beginn eine Initialübertragung machen, mit ein paar Infos für einen Spieler im Spiel (Name etc). Das Interessante ist, dass das nie beim Server ankommt.
Wenn ich das selbe Event zu einem späteren Zeitpunkt abschicke z.b. durch einen Button, wird das Event sauber Übertragen, aber nicht hier.
Mein Verdacht ist, dass zu dem Zeitpunkt an dem ich hier versende, der Server noch nicht seine Streams aufgebaut hat, um zu empfangen.
Mein Problem ist jetzt, dass ich keine Ahnung hab wie ich sicherstellen kann, dass mein Server empfangsbereit ist, bevor ich das abschicke. Oder lieg ich hier ganz falsch.
grüße xasz
ich mach grad meine ersten Schritte in der Netzwerkprogrammierung. Prinzipiell funktioniert soweit alles und bin ganz zufrieden. Allerdings habe ich heute etwas festgestellt, was ich nicht ganz verstehe.
Hier mal kurz ein bisschen Code. Ich hab auf dem Server einen Clientaccepter, der auf clients wartet:
Java:
while(this.isListening){
Socket client;
try {
client = socket.accept();
server.addClientHandler(new ClientHandler(this.server,client));
} catch (IOException e) {
e.printStackTrace();
}
}
Der Clienthandler holt sich dann im Constructor die Streams:
Java:
public ClientHandler(NetworkServer gs, Socket socket) throws IOException{
this.gameServer = gs;
this.socket = socket;
this.inputStream = new BufferedInputStream(this.socket.getInputStream());
this.outputStream = new BufferedOutputStream(this.socket.getOutputStream());
}
Meine Client connected wie folgt:
Java:
public void connect() throws UnknownHostException, IOException {
this.socket = new Socket(host, serverPort);
this.inputStream = new BufferedInputStream(this.socket.getInputStream());
this.outputStream = new BufferedOutputStream(
this.socket.getOutputStream());
//neue zeile
this.sendNetworkEvent(new PlayerJoinEvent(this.gameObject.getMyPlayer()));
}
Bisher hatte ich überhaupt keine Probleme und es funktioniert die Netzwerkübertragung.
Jetzt wollte ich gleich zu beginn eine Initialübertragung machen, mit ein paar Infos für einen Spieler im Spiel (Name etc). Das Interessante ist, dass das nie beim Server ankommt.
Wenn ich das selbe Event zu einem späteren Zeitpunkt abschicke z.b. durch einen Button, wird das Event sauber Übertragen, aber nicht hier.
Mein Verdacht ist, dass zu dem Zeitpunkt an dem ich hier versende, der Server noch nicht seine Streams aufgebaut hat, um zu empfangen.
Mein Problem ist jetzt, dass ich keine Ahnung hab wie ich sicherstellen kann, dass mein Server empfangsbereit ist, bevor ich das abschicke. Oder lieg ich hier ganz falsch.
grüße xasz