Netzwerkkomponente für Online-Spiel entwickeln

So irgendwie klappt das alles nicht!!


Hier mein bisheriger Code....

Java:
import java.io.*;
import java.net.*;
import java.util.*;


public class Connection {


private boolean dataReadyToTransmitToNetLogic;
boolean isrun=false;
String msgFromServer=null;
String msgToServer=null;
BufferedReader in;
PrintStream    out;

public Connection (String adr, int prt, int tm){

	openConnection(adr, prt);
	
}

private void openConnection(String adr, int prt){
	try {
		final Socket sok=new Socket(adr,prt);
		isrun=true;
		
			  out = new PrintStream(sok.getOutputStream());

			
			Thread inputThread = new Thread(){
				public void run() {
					super.run();
					
					try {
						in = new BufferedReader(new InputStreamReader(sok.getInputStream()));
						while (isrun){
							if (in.ready()){
								msgFromServer=in.readLine();
								filterMessage(msgFromServer);
							}
						}
						in.close();
												
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
				
			};

			inputThread.start();
			
		
	}
	catch (IOException e) {
			e.printStackTrace();
		}
	
	}



public boolean dataReceived(){
	return dataReadyToTransmitToNetLogic;
}

public void sendMove(int x, int y){
	msgToServer = "move(x="+x+";y="+y+")";
	out.println(msgToServer);
	out.println("\r\n");
	out.flush();
}


public void sendInit(int x, int y, int c, String name){
	char beginner='n';
	if(c==0)beginner ='c';
	if(c==1)beginner ='s';
	System.out.println("Sende Nachricht!");
	msgToServer ="init(xDim="+x+";yDim="+y+";begin="+beginner+";user="+name+")";
	System.out.println(msgToServer);
	out.println(msgToServer);
	out.flush();
	System.out.println("gesendet");
	
}

public void sendExit(){
	msgToServer="exit";
	out.println(msgToServer);
	out.flush();
	System.out.println("gesendet");
}


private void filterMessage(String s){
	
	if(s.startsWith(">")){
	System.out.println("Info "+s);
	}
	if(s.startsWith("board")){
		System.out.println("Board Zeile "+s);
	}
	
	if(s.startsWith("move")){
		System.out.println("Zug erhalten "+ s);
	}
	if(s.startsWith("init")){
		System.out.println("Name erhalten "+s);
	}
}

public static void main(String [] args){

	Connection con= new Connection("sirius.fernuni-hagen.de", 4713,0);
		
	con.sendInit(5, 5, 1, "Marco");
		
	con.sendExit();
}

Lasst das Bitte mal bei euch laufen. Keine Angst, geht nix kaputt!

Die Befehle werden alle ausgeführt und der Server reagiert korrekt. Allerdings passt die Reiehnfolge meiner Ausgabe nicht!

Laut Console, wird INIT aufgerufen und dann exit. Anschlißend kommt der WelcomeText des Servers, der eigenlich noch vor dem sendInit angezeugt werden sollte. Dann kommt die Antowrt auf die anderen Befehle.

Ich will aber:
Welcome Meldung ausgeben, dann SendInit , Antwort anwarten und dann Exit ausführen. Antwort abwarten.

Ich bitte Euch nochmal um Lösungen....
Vielen Dank!
 
Zurück