2009-07-12 12 views
0

Ich kämpfe mit rohen Sockets in Win32 und jetzt bin ich fest, die soetsockopt Funktion gebe mir die 10022 Fehler (ungültiges Argument), aber ich denke, ich übergebe die richtigen Argumente ... natürlich bin ich falsch u_u 'Setze IP_HDRINCL zu setsockopt Funktion in win32

sock = socket(AF_INET,SOCK_RAW,IPPROTO_UDP); 
if (sock == SOCKET_ERROR) 
{ 
    printf("Error socket(): %d", WSAGetLastError()); 
    return; 
} 
char on = 1; 
error = setsockopt(sock,IPPROTO_IP,IP_HDRINCL,&on,sizeof(on)); 
if (sock == SOCKET_ERROR) 
{ 
    printf("Error setsockopt(): %d", WSAGetLastError()); 
    return; 
} 

Weiß jemand was mit meinem Code passiert?

Antwort

1

Soweit ich erinnere Sie int on = 1 statt char verwenden müssen ...

+0

Es ist wahr! : D Danke Artyom! – Alfre2

2

Sie DWORD 1 oder bool true verwenden sollten, gibt es viele Dokumente, die mit char-Code zeigen, int, DWORD, Bool, aber das richtige ist Buch oder DWORD, vielleicht Int in einigen Systemen ... aber im Moment funktionierte es für mich als bool.

Übrigens habe ich Fehler 10014 WSAEFAULT beim Ausführen der gleichen Funktion Setsockopt mit IP_HDRINCL in Win7 gefunden, funktioniert es in XP, aber in Win7 schlägt es immer fehl und weiß nicht warum ... vielleicht ist es in deaktiviert Aktuelle Windows-Versionen?