Bonjours,
J'ai lu le cours de Melem sur les raw sockets. Malheuresement je n'arrive pas a créer de sockets de type SOCKET_RAW:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int main()
{
    /* variables */
    SOCKET socket_id;
    DWORD sockopt = TRUE;
 
    system("title Envoi d'un flux avec une raw socket en TCP");
    WSADATA wsadata;
    if(WSAStartup(MAKEWORD(2,0), &wsadata) != 0)
    {
        printf("/!\\ La fonction WSAStartup a échoue.\n");
    }
 
    if (setsockopt(socket_id, IPPROTO_IP, IP_HDRINCL, (char *)&sockopt, sizeof(sockopt)) == SOCKET_ERROR)
    {
        printf("/!\\ La fonction setsockopt a echoue\n");
    }
 
    socket_id = socket(PF_INET, SOCK_RAW, IPPROTO_IP);
    if(socket_id == INVALID_SOCKET)
    {
        printf("/!\\ Impossible de creer une socket valide : %i\n", socket_id);
    }
 
    return 0;
}
Lorsque j'exécute le programme on peut apercevoir sur le flot std :
/!\ La fonction setsockopt a echoue
/!\ Impossible de creer une socket valide : -1

Merci de votre aide

Cordialement Zestyr