[SOCKETS] einzelnes Paket erzwingen



  • Ja aber selbst für einen nullterminierten String ist doch nicht garantiert das er mit einem send-Aufruf geschickt ist. Oder?

    Das steht eben so in der Doku.



  • Socket-Neuling schrieb:

    Ja aber selbst für einen nullterminierten String ist doch nicht garantiert das er mit einem send-Aufruf geschickt ist. Oder?

    vielleicht bei nicht-blockierenden sockets oder wenn die verbindung abgebrochen ist. eigentlich sollte 'send' blocken, wenn kein platz mehr im sendepuffer ist.



  • ok danke, das ganze werde ich morgen mal testen.



  • die Funktion funktioniert leider nicht, er bleibt dort immer hängen (Endlosschleife)



  • Rodney schrieb:

    die Funktion funktioniert leider nicht, er bleibt dort immer hängen (Endlosschleife)

    ja, es ist ja auch nur ein beispiel dass ungefähr das prinzip zeigen soll. sollte aber funktionieren, wenn der sender strings sendet und wenn er fertig ist, die verbindung beendet.
    also 'recv' blockiert, wenn nichts im empfangspuffer ist. das ist normal. du könntest es in einen zweiten thread auslagern oder non-blocking sockets nehmen (dafür ist die funktion aber nicht ausgelegt).



  • net schrieb:

    Rodney schrieb:

    die Funktion funktioniert leider nicht, er bleibt dort immer hängen (Endlosschleife)

    ja, es ist ja auch nur ein beispiel dass ungefähr das prinzip zeigen soll. sollte aber funktionieren, wenn der sender strings sendet und wenn er fertig ist, die verbindung beendet.
    also 'recv' blockiert, wenn nichts im empfangspuffer ist. das ist normal. du könntest es in einen zweiten thread auslagern oder non-blocking sockets nehmen (dafür ist die funktion aber nicht ausgelegt).

    ich hab die Funktion bei mir aus der WM_SOCKET ausgerufen...

    Ich bekomme aber nur WM_SOCKET NAchrichten wenn etwas im Buffer vorhanden ist (FD_READ)



  • Rodney schrieb:

    ich hab die Funktion bei mir aus der WM_SOCKET ausgerufen...
    Ich bekomme aber nur WM_SOCKET NAchrichten wenn etwas im Buffer vorhanden ist

    ok, aber wenn das letzte byte keine 0 ist dann landet er wieder im 'recv'-aufruf und wartet bis wieder was gesendet wurde.
    wie gesacht, der code ist nur anschauungsobjekt. für deinen konkreten fall musst du schon was anpassen.


Anmelden zum Antworten