setsockopt() warum ErrorCode : 10038



  • Hey Leute,

    Warum bekomme ich bei diesem Code,

    int nMillis=80;
    setsockopt((int)&s,SOL_SOCKET, SO_RCVTIMEO, (const char *) &nMillis, sizeof(nMillis));
    

    immer den Windows Socket Error Code WSAENOTSOCK 10038 raus.

    Laut MSDN:
    Socket operation on nonsocket.

    An operation was attempted on something that is not a socket. Either the socket handle parameter did not reference a valid socket, or for select, a member of an fd_set was not valid.

    Der Socket wird so erstellt ( erfolgreich )

    socket(AF_INET, SOCK_STREAM, 0);
    

    Ich nutze Win7 / Pelles C

    Mfg Homie



  • Was soll denn dieses Gebastel mit dem (int)&s eigentlich erreichen? socket() liefert dir ein Socket Handle, setsockopt() erwartet ein Socket Handle - also kannst du den von socket() gelieferten Wert direkt übergeben:

    int s = socket(...);
    setsockopt(s,...);
    


  • Wenn ich den nicht behandel bekomme ich folgenden Fehler

    Type error in argument 1 to 'setsockopt'; expected 'unsigned int' but found 'int *'



  • 😕 Wo ist denn da ein int*? Hast du eventuell einen überflüssigen Adress-Operator dort eingebaut?

    Das mit dem unsigned könnte noch zu lösen sein, indem statt dem "int s" ein "SOCKET s" verwendet wird. Ich bin da oben von den man-pages ausgegangen und die geben als Parametertyp int an.



  • Ach ich Wurst, beim Antwort tippen ist es mir aufgefallen s ist bei mir ein Array der korrekte Parameter müsste s[TTL] an der stelle sein.

    Er nimmt es jetzt soweit an allerdings steht das Timeout bei connect() wohl immer noch auf 20sek ( mitgezählt ) und nicht auf 80 Milisek


Anmelden zum Antworten