Socket UDP Server/Client Kommunikation sehr langsam

Vintner

Mitglied
Hallo,

ich habe eine Server/Client-Anwendung, wobei der Server vom Client ein Point-Objekt erhält und der Server dem Client zwei Point-Objekte zurückschickt. Lokal auf Rechner, der als HTTP-Server läuft, sowie in der Entwicklungsumgebung läuft das ganze reibungslos, aber wenn der Client über das Netzwerk mit dem Server verbunden ist, läuft der Datenaustausch extrem verlangsamt.

Hier die serverseitige Clientkommunikation:

Java:
public void run(){
		try {
			ois = new ObjectInputStream(client.getInputStream());
			oos = new ObjectOutputStream(client.getOutputStream());
		} catch (IOException e) {}
		while(i<j){   //kann als "true" angesehen werden
			try {
				//Spielerposition empfangen
				playerPos = (Point) ois.readObject();
				//Gegnerposition an Spieler senden
				oos.writeObject(opponentPos);
				oos.flush();
				//Ballposition an Spieler senden
				oos.writeObject(ball);
				oos.flush();
				//Socketverbindung entlasten
				sleep(100);
				//i++;
			} catch (Exception e) {}
		}
                //Client-Verbindungen schließen wenn nicht mehr gebraucht
		try {
			client.close();
		} catch (IOException e) {}
	}

Und hier der Client:
Java:
public void run(){
		try {
			clientSocket = new Socket("192.168.0.102",4444);
			oos =  new ObjectOutputStream(clientSocket.getOutputStream());
			ois = new ObjectInputStream(clientSocket.getInputStream());
		} catch (IOException e1) {...}
		while(true){
			try {
				//Spielerposition an Server senden
				oos.writeObject(Schieber.getSchieber().getPosition());
				oos.flush();
				//GegnerPosition vom Server empfangen
				opponentPos = (Point)ois.readObject(); //Wert zwischenspeichern
				Schieber2.getSchieber().setPosition(opponentPos); //zwischengespeicherter Wert dem GegenspielerObjekt zuweisen
				ep.setText(opponentPos.x+","+opponentPos.y);
				//BallPosition vom Server empfangen
				ball = (Point)ois.readObject();
				Ball.getBall().setPosition(ball);
				//Socketverbindung entlasten
				sleep(100);
			} catch (Exception e) {...	}
		}
	}

Vielleicht könnt ihr sehen/erkennen warum das ganze übers Netzwerk so stark verlangsamt läuft.
Das ExceptionHandling habe ich mal stark vereinfacht.
 
Ähm, du verwendest Sockets und Streams -> das ist TCP. Warum schreibst du dann im Titel was von UDP ?

Ansonsten muss ich aber sagen das ich mal ein ähnliches Problem bei meinem "Schiffe versenken" hatte: lokal lief alles super, aber über LAN (GBit/s) hatte ich dann doch einen "lagg" von guten 5 Sekunden. Es kann sein das etwas mit deinem Netzwerk nicht stimmt.
 
Ach richtig, ursprünglich waren es mal DatagramSockets. Den Titel kann ich leider nicht mehr ändern. Trotzdem wüßte ich gerne warum es über das Netzwerk so langsam ist. Ich habe das auch an einem Netzwerk an der Uni getestet, sowie zuhause ... allesamt gleich langsam.
 

Neue Themen


Zurück
Oben