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:
Und hier der Client:
Vielleicht könnt ihr sehen/erkennen warum das ganze übers Netzwerk so stark verlangsamt läuft.
Das ExceptionHandling habe ich mal stark vereinfacht.
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.