Kati82 Geschrieben 17. April 2009 Teilen Geschrieben 17. April 2009 Hallo, ich hab da nochmal ne Frage zur Socketprogrammierung. Ich möchte gern die Option SO_SNDLOWAT mit setsockopt() setzen. Leider kommt immer eine Fehlermeldung zurück, wenn ich diese Funktion ausführe (Fehlercode 10042: bad protocol option). In der MSDN ist diese Option mit aufgeführt, also gehe ich mal davon aus, dass ich SO_SNDLOWAT auch unter Windows benutzen kann. Deshalb die Frage, ob es bestimmte Voraussetzungen gibt um diese Funktion setzen zu dürfen. Darf ich diese Eigenschaft zum Beispiel benutzen, wenn mein Client (bei dem ich das setzen möchte) bereits mit dem Server verbunden ist? Müssen beim Server die gleichen Eigenschaften gesetzt werden, oder reicht es wenn ein Kommunikationspartner diese Eigenschaft setzt? Ich hoffe auf eure Hilfe. Danke. Gruß Kati82 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 17. April 2009 Teilen Geschrieben 17. April 2009 In der MSDN ist diese Option mit aufgeführt, also gehe ich mal davon aus, dass ich SO_SNDLOWAT auch unter Windows benutzen kann.Gib mal einen Link. Ich finde diese Option nur in diversen "Not Supported"-Listen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kati82 Geschrieben 17. April 2009 Autor Teilen Geschrieben 17. April 2009 Hier der Link: CAsyncSocket::SetSockOpt Ach Mist! Ich habe gerade gelesen, das gerade dieses nicht von WinSocket unterstützt wird. Manchmal sollte man halt auch das Kleingedruckte lesen. Da muss ich mir jetzt mal Gedanken drüber machen, ob man diese Option nicht noch irgendwie anders setzen kann. Ich möchte nämlich einen Test schreiben, bei dem der Anwender die Puffergröße angibt, und dieses dann im ganzen gesendet wird und nicht irgendwie auf mehrere Telegramme aufgeteilt wird. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kati82 Geschrieben 17. April 2009 Autor Teilen Geschrieben 17. April 2009 Ich glaub, das hat sich erledigt, das kann man nicht einstellen. Wäre ja auch sinnlos, weil ein TCP-Paket auch nur ein bestimmte Länge hat. Ab einer bestimmten Größe muss halt segmentiert werden. Trotzdem noch ne andere Frage. In meinem Client-Programm habe ich ausversehen mal auf den Button Senden gedrückt, ohne dass ich mich vorher zum Server verbunden habe. Logischerweise kommt dann eine Fehlermeldung beim Senden. Der Server macht nur ein Echo von dem, was der Client gesendet hat. Wenn ich mich jetzt mit dem Server verbinde und noch einmal sende, dann kommt auch noch ein echo vom vorigen Sendeversuch. Das heißt, also das die Daten vorher in irgendeinen internen Puffer zwischengespeichert wurden. Kann mir jemand sagen, wie man diesen Puffer leeren kann. Das würde sonst meine Testergebnisse verfälschen. Gruß Kati82 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 17. April 2009 Teilen Geschrieben 17. April 2009 Wenn ich mich jetzt mit dem Server verbinde und noch einmal sende, dann kommt auch noch ein echo vom vorigen Sendeversuch. Das heißt, also das die Daten vorher in irgendeinen internen Puffer zwischengespeichert wurden.Ich vermute eher, dass du die Daten nochmal sendest, oder irgendwo eine Terminierung fehlt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.