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 :
Voici ce que ça me donne en sortie :
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); ...
On voie que WSAStarup() renvoie 0, donc c'est OK de ce côté là.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 WSAStartup() = 0 socket() = -1
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
Partager