Habe aufs erwürgen setsockopt(socket, SOL_SOCKET, SO_RCVTIMEO, ...) (#7) vor und hinter jede erdenkliche Stelle mit 3..300s eingesetzt, ohne, dass es irgendwas am Timeout/Verhalten änderte. Folglich habe ich heute die GameClient::Run() und dazu die Logzeilen etwas beobachtet.
Die Logzeilen sagen einem: nicht der Client bricht ab, sondern der Server. Server lädt Karte, Client verbindet Client lädt Karte, Client braucht zu lange -> rausschmiss.
Jeder der "aaahh" und "SERVER: Reserved slot 3 freed due to ping timeout" gesehen hat und den Code kennt, hätte in Nanosekunden auf PING_TIMEOUT=30 kommen müssen, da die Zeilen keine 2 Zeilen auseinander stehen.
> aaahh
> SERVER: Reserved slot 3 freed due to ping timeout
> Receiving Message from server failed
> client forced to stop
Ping? Pong!
Bitte einbauen und ausliefern. :) (Vielen Dank für die nette Falle :))
GameProtocol.h
---
NP_LOCAL
};
// Wie lange maximal warten, bis Rausschmiss des Spielers
-const unsigned PING_TIMEOUT = 30000;
+const unsigned PING_TIMEOUT = 300000; // mind. 60
// Ziele fürs Chatten (Ingame)
enum ChatDestination
---
Habe aufs erwürgen setsockopt(socket, SOL_SOCKET, SO_RCVTIMEO, ...) (#7) vor und hinter jede erdenkliche Stelle mit 3..300s eingesetzt, ohne, dass es irgendwas am Timeout/Verhalten änderte. Folglich habe ich heute die GameClient::Run() und dazu die Logzeilen etwas beobachtet.
Die Logzeilen sagen einem: nicht der Client bricht ab, sondern der Server. Server lädt Karte, Client verbindet Client lädt Karte, Client braucht zu lange -> rausschmiss.
Jeder der "aaahh" und "SERVER: Reserved slot 3 freed due to ping timeout" gesehen hat und den Code kennt, hätte in Nanosekunden auf PING_TIMEOUT=30 kommen müssen, da die Zeilen keine 2 Zeilen auseinander stehen.
void GameServerPlaye r::doTimeout( ) per::inst( ).GetTickCount( ) - connecttime ) > PING_TIMEOUT ) )
puts(" aaahh") ;
LOG.lprintf( "SERVER: Reserved slot %d freed due to ping timeout\n", playerid);
{
if( (ps == PS_RESERVED) && ( ( VideoDriverWrap
{
...
Wieso diese Abstandshaltung? Ich finde es schade, dass Spikes Arbeiten nicht in der Form unterstützt werden, wie es eigentlich für S25 notwendig wäre (http:// www.siedler25. org/index. php?com= forum&mod= forum&action= thread& id=1154& start=1).