Socket-Verbindungen in VFP9

09/04/2008 - 01:27 von Matthias Kahlert | Report spam
Hallo zusammen,

ich spiele im Moment in meiner Anwendung ein wenig mit Socket-Verbindung
herum. Ich habe mir hierzu einen kleinen Server geschrieben, der dank
SrvAny schön im Hintergrund als Dienst làuft.

Aber das seltsame ist: Der Dienst làuft absolut ohne Probleme, und
antwortet mir auch sauber auf meine Events. Aber: Von Zeit zu Zeit
schnappt sich das blöde Teil einfach mal eben 100% CPU Last (bzw. beim
DualCore 50% CPU Last). Das passiert aber nur im Leerlauf (also wenn
keinerlei Connect von Außen kommt und wenn kein Client verbunden ist).
Und selbst dann antwortet der Service auch so wie er sollte.

Ich hab schon alles mögliche versucht, Events mitzuprotokollieren etc.
Aber ich finde keine Ursache, woher die CPU Last kommt...

Heute dann ein weiterer toller Effekt festgestellt: Dienst war auf 100%
CPU Last, ich habe dann mit einem Testprogramm von Außen ein Verbindung
aufgebaut, und schon war wieder Ruhe, die CPU Last ging wieder runter
und blieb unten.

Irgendwo stehe ich langsam auf dem Schlauch...

Daher Fragen:

- Ich verwende momentan das Microsoft WinSock Control (also
"mswinsock.winsock.1"). Gibt es Alternativen?
wwIPstuff kommt nicht in Frage, das Ding kann zu wenig (ich muss auf
zwei Ports einen Listener hinhàngen, und zusàtzlich müssen mehrere
Clients dynamisch Verbindungen aufbauen können und diese auch halten
können, Kommunikation erfolgt in beide Richtungen, außerdem sollte alles
Event-gesteuert sein).

- Oder liegt das Problem eventuell gar nicht am WinSock sondern eher am
SrvAny? Gibt es da bekannte Probleme, wenn eine FoxPro Anwendung als
Dienst làuft?

Das Tolle ist eben, dass es sich nicht mal nachvollziehen làsst... das
Ding làuft teilweise stundenlang ohne nennenswerte CPU Last, und dann
gehts plötzlich los... Keine Fehlermeldungen, nichts... Error-Handler
schlàgt auch nicht an...

Bin für jede Idee dankbar ;-)

Matthias
 

Lesen sie die antworten

#1 Oswald Petersen
09/04/2008 - 08:23 | Warnen spam
Hallo Matthias,

was die plötzliche CPU Last angeht weiß ich keinen Rat, aber ich kann dir
bestàtigen daß das MS Winsock problemlos làuft, hier bei uns seit vielen
Jahren, direkt eingebunden in eine Exe...

Eine Alternative ist socketwrench, das haben wir auch eine weile eingesetzt,
geht auch...

mfg

OP

"Matthias Kahlert" wrote:

Hallo zusammen,

ich spiele im Moment in meiner Anwendung ein wenig mit Socket-Verbindung
herum. Ich habe mir hierzu einen kleinen Server geschrieben, der dank
SrvAny schön im Hintergrund als Dienst làuft.

Aber das seltsame ist: Der Dienst làuft absolut ohne Probleme, und
antwortet mir auch sauber auf meine Events. Aber: Von Zeit zu Zeit
schnappt sich das blöde Teil einfach mal eben 100% CPU Last (bzw. beim
DualCore 50% CPU Last). Das passiert aber nur im Leerlauf (also wenn
keinerlei Connect von Außen kommt und wenn kein Client verbunden ist).
Und selbst dann antwortet der Service auch so wie er sollte.

Ich hab schon alles mögliche versucht, Events mitzuprotokollieren etc.
Aber ich finde keine Ursache, woher die CPU Last kommt...

Heute dann ein weiterer toller Effekt festgestellt: Dienst war auf 100%
CPU Last, ich habe dann mit einem Testprogramm von Außen ein Verbindung
aufgebaut, und schon war wieder Ruhe, die CPU Last ging wieder runter
und blieb unten.

Irgendwo stehe ich langsam auf dem Schlauch...

Daher Fragen:

- Ich verwende momentan das Microsoft WinSock Control (also
"mswinsock.winsock.1"). Gibt es Alternativen?
wwIPstuff kommt nicht in Frage, das Ding kann zu wenig (ich muss auf
zwei Ports einen Listener hinhàngen, und zusàtzlich müssen mehrere
Clients dynamisch Verbindungen aufbauen können und diese auch halten
können, Kommunikation erfolgt in beide Richtungen, außerdem sollte alles
Event-gesteuert sein).

- Oder liegt das Problem eventuell gar nicht am WinSock sondern eher am
SrvAny? Gibt es da bekannte Probleme, wenn eine FoxPro Anwendung als
Dienst làuft?

Das Tolle ist eben, dass es sich nicht mal nachvollziehen làsst... das
Ding làuft teilweise stundenlang ohne nennenswerte CPU Last, und dann
gehts plötzlich los... Keine Fehlermeldungen, nichts... Error-Handler
schlàgt auch nicht an...

Bin für jede Idee dankbar ;-)

Matthias

Ähnliche fragen