Bonjour,

J'ai un petit souci avec les sockets en mode SOCK_RAW sous Code::Blocks, la création de la socket échoue systématiquement alors que ça marche en SOCK_STREAM.
Voici un bout de code :
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
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <winsock2.h>
 
int main()
{
    // mise en marche des socket
    WSADATA wsaData = {0};
    int err = WSAStartup(MAKEWORD(2,2), &wsaData);
    printf("WSAStartup() = %d\n", err);
 
    // creation d'une socket
    SOCKET sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
    printf("socket() = %d\n", sock);
    ...
Voici ce que ça me donne en sortie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
WSAStartup() = 0
socket() = -1
On voie que WSAStarup() renvoie 0, donc c'est OK de ce côté là.
Je "link" avec la lib C:\MinGW\lib\libws2_32.a, je n'ai aucun warning, aucune erreur de compilation.
Je ne comprends pas pourquoi la fonction socket() me renvoie toujours -1 alors que, comme je l'ai déjà écrit plus haut, ça marche bien avec SOCK_STREAM.

Quelqu'un a une idée ?
Merci d'avance.
jm