Zum Inhalt springen

Socketoptionen


Kati82

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...