OutputStream Pufferung (was muss ich tun?)

Hi, ich habe ein Spiel programmiert für das ich jetzt noch einen Multiplayermodus über LAN machen will. Ich habe dazu eine Application (Server) die mehrere Threads hat in denen Variablen von den Spielapplicationen empfangen und an die anderen Spieler zurück geschickt werden. Das funktioniert auch alles gut so, aber leider meistends nicht flüssig sondern nur mit sehr starken Rucklern.

Mein Lehrer hat mir gesagt dass ich die Daten puffern muss die ich verschicke.
Ich hab mir jetzt ein paar Sachen durchgelesen. In den Texten hieß es dass ich die Methode flush() benutzen soll, aber ich märke keinen unterschied.

Muss man die Methode flush() eigendlich nur einmal ausführen und kann dann ewig Daten verschiecken?

Hier ein Stück meines Quellcodes:

Code:
...
server = new Socket(sServerIP,iPort);
in  = new Scanner( server.getInputStream() ); 
out = new PrintWriter( server.getOutputStream(), true ); 
out.flush();
...

Code:
public void xy (int outX, int outY) {
		out.println(outX);
		out.println(outY);
		switch(inSpieleranzahl) {
		case 4:
			inXy[3] = new  Point2D.Double(Double.parseDouble(in.nextLine()),Double.parseDouble(in.nextLine()));
		case 3:
			inXy[2] = new Point2D.Double(Double.parseDouble(in.nextLine()),Double.parseDouble(in.nextLine()));
		case 2:
			inXy[1] = new Point2D.Double(Double.parseDouble(in.nextLine()),Double.parseDouble(in.nextLine()));
		case 1:
			inXy[0] = new Point2D.Double(Double.parseDouble(in.nextLine()),Double.parseDouble(in.nextLine()));
			break;
		}
	}
 
Flush sorgt dafür, das wirklich ALLE Daten gesendet werden.
Schau dir mal den Anhang an. Ist zwar nur teilweiße durchkommentiert, könnte dir aber eine menge Arbeit abnehmen. (Source liegt bei)
 

Anhänge

  • commands.zip
    45,4 KB · Aufrufe: 15
Wenn ich dein jar-File öffnen will kommt immer nur follgende Fehlermeldung.

img.php
 
Du sollst sie nicht mit java/-w ausführen, sondern im ClassPath einbinden. (bzw. mit einen Dekompressionsprogramm wie WinRar oder 7zip öffnen und die Dateien einzeln ins Projekt kopieren, deine Entscheidung.)
 

Neue Beiträge

Zurück