Bonjour,
Quelles pourraient être les raisons qui font qu'une socket, initialisée par l'appel à socket() et dont un bind() fonctionne, ne soit plus perçue comme une socket lors de l'appel à listen() ?
Après l'appel à listen(), puisque le retour est égal à SOCKET_ERROR, j'ai voulu en savoir plus sur l'erreur levée en appelant WSAGetLastError(). Résultat : socket error 10038 : socket operation on nonsocket.
Voici le code source de la partie qui flanche :
J'ai testé le code sur plusieurs machines différentes et pour chaque machine, j'ai tenté d'écouter sur des ports différents mais le problème persiste.
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
27
28 WSADATA WSAData; WSAStartup(MAKEWORD(2,0), &WSAData); socketServeur = socket(AF_INET, SOCK_STREAM, 0); sinServeur.sin_addr.s_addr = INADDR_ANY; sinServeur.sin_family = AF_INET; sinServeur.sin_port = htons(1500); SOCKET socketClient; SOCKADDR_IN sinClient; if(bind(socketServeur, (SOCKADDR *)&sinServeur, sizeof(sinServeur)) == SOCKET_ERROR) { /* Traitement de l'erreur */ } if(listen(socketServeur, 5) == SOCKET_ERROR) { int err = WSAGetLastError(); FILE * pFile = NULL; pFile = fopen("listen.txt", "a"); if(pFile != NULL) { fprintf(pFile, "listen erreur = %d\n", err); fclose(pFile); } }
Voyez-vous quelle peut-être la cause de cette erreur ?
Partager