Frage

Ich versuche, über UDP zu senden, um den folgenden Code verwenden, aber ich bin immer seltsame Ergebnisse.

    if((sendto(newSocket, sendBuf, totalLength, 0, (SOCKADDR *)&sendAddr, sizeof(sendAddr)) == bytesSent) < 0)
    {
    printf("Send error! - %d\n", WSAGetLastError());

    }

Allerdings sagen, wenn die totalLength Variable 30 die sendto Funktion tatsächlich 2.292.556 zurück gesetzt ist, sollte es nicht etwas, zumindest um die 30 Mark zurückkommen? Ich habe die totalLength Variable überprüft, bevor sendto verwenden und es wird wieder glücklich Wert i mit einigen, aber dann sendto kehrt einen massiven Wert. Die Gesamtlänge ist nie größer dann die tatsächliche Puffergröße.

WSAGetLastError ist gerade Rückkehr 0.

Danke.

War es hilfreich?

Lösung

Ich denke, Ihr Problem ist der == bytesSent) < 0) Teil der bedingten. Should'n dies wäre etwas entlang der Linien von if (( bytesSent = sendto( ... )) < 0 )?

Andere Tipps

Sie sind checing wenn sendto (...) gleich statt wahrscheinlich bytesSent bytesSent=sendto

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top