jbJOGI
Cadet 4th Year
- Registriert
- März 2004
- Beiträge
- 105
Hi,
ich hab ein Problem, das mich bald zur Verzweiflung treibt.
Und zwar programmiere ich gerade ein Programm, welches ich daheim im privaten LAN zur Steuerung meines Servers verwenden möchte, starten, runterfahren, etc.
Um nun Benutzereingaben, wie zb. eine IP (xxx.xxx.xxx.xxx), zu prüfen, zerlege ich diese in der Socket-Klasse, die die Verbindung aufbaut, in Teilstrings, trenne also am Punkt. Diese Teilstrings werden dann auf Gültigkeit geprüft und am Ende wieder zusammen gesetzt um den Connect zu machen.
Auf jeden Fall hatte ich Probleme, wenn ich diese Klasse in mehreren Threads verwendet habe. Wie ich mittlerweile rausgefunden habe, liegt das gerade an strtok(), da diese Funktion intern einen Zeiger benutzt um sich die Position im String zu merken, für weitere Aufrufe mit NULL als erstem Parameter (sie ist also nicht re-entrant, geschweige denn thread-save).
Also brauche ich eine alternative Funktion um meine Strings auch in verschiedenen Threads prüfen zu können. Im Netz habe ich dazu nun schon ein paar mal von strtok_r gelesen, was genau diese Funktionalität bietet. Angeblich sollte diese Funktion auch in string.h enthalten sein, was bei mir allerdings nicht der Fall ist. So wie es aussieht gibt es das nur für Unix/Linux, aber nicht für Windows.
Wie bekomme ich die Funktion auf meinen Rechner, damit ich sie endlich benutzen kann? Nur die string.h austauschen, wird wohl nicht helfen, da ja dann trotzdem noch die dlls nicht stimmen. Hat jemand eine Ahnung, wie ich dieses Problem beheben kann? Es kann doch nicht sein, dass ich der erste bin, der darüber stolpert.
Entwicklungsumgebung:
Windows XP Prof. SP2
Visual Studio .NET 2003
ich hab ein Problem, das mich bald zur Verzweiflung treibt.
Und zwar programmiere ich gerade ein Programm, welches ich daheim im privaten LAN zur Steuerung meines Servers verwenden möchte, starten, runterfahren, etc.
Um nun Benutzereingaben, wie zb. eine IP (xxx.xxx.xxx.xxx), zu prüfen, zerlege ich diese in der Socket-Klasse, die die Verbindung aufbaut, in Teilstrings, trenne also am Punkt. Diese Teilstrings werden dann auf Gültigkeit geprüft und am Ende wieder zusammen gesetzt um den Connect zu machen.
Auf jeden Fall hatte ich Probleme, wenn ich diese Klasse in mehreren Threads verwendet habe. Wie ich mittlerweile rausgefunden habe, liegt das gerade an strtok(), da diese Funktion intern einen Zeiger benutzt um sich die Position im String zu merken, für weitere Aufrufe mit NULL als erstem Parameter (sie ist also nicht re-entrant, geschweige denn thread-save).
Also brauche ich eine alternative Funktion um meine Strings auch in verschiedenen Threads prüfen zu können. Im Netz habe ich dazu nun schon ein paar mal von strtok_r gelesen, was genau diese Funktionalität bietet. Angeblich sollte diese Funktion auch in string.h enthalten sein, was bei mir allerdings nicht der Fall ist. So wie es aussieht gibt es das nur für Unix/Linux, aber nicht für Windows.
Wie bekomme ich die Funktion auf meinen Rechner, damit ich sie endlich benutzen kann? Nur die string.h austauschen, wird wohl nicht helfen, da ja dann trotzdem noch die dlls nicht stimmen. Hat jemand eine Ahnung, wie ich dieses Problem beheben kann? Es kann doch nicht sein, dass ich der erste bin, der darüber stolpert.

Entwicklungsumgebung:
Windows XP Prof. SP2
Visual Studio .NET 2003