Socket SOCK_RAW sous Code::Blocks/Windows
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:
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:
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