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