Erreur 10038

Signaler
Messages postés
1
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
30 décembre 2003
-
 Themaletron -
Hello ! j’ai un probleme avec la fonction bind de mon programme. En effet cette fonction me renvois l’erreur 10038 « attempted ». Est ce que quelqu’un peut m’aider.
Merci.

#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")

void main()
{
SOCKET sock;
int ERREUR,lenght,port,i;

WSADATA WSA;

port =5000;
SOCKADDR_IN sin;
lenght=sizeof(sin);

if(WSAStartup(MAKEWORD(2,0),&WSA)==0)
{
printf("wsastartup ok\n");
}

ERREUR=socket(PF_INET,SOCK_STREAM,0);
if(ERREUR==INVALID_SOCKET )
{
printf("socket erreur\n");

}

sin.sin_family =PF_INET;
sin.sin_addr.s_addr=INADDR_ANY;
sin.sin_port =htons(port);

ERREUR=bind(sock,(struct sockaddr *)&sin,lenght);
if(ERREUR==INVALID_SOCKET)
{
printf("erreur %i\n",ERREUR);
i=WSAGetLastError ();
printf("error code %i\n",i);
}

ERREUR=listen(sock,0);
if(ERREUR==INVALID_SOCKET)
{
printf("erreur au listen\n");
i=WSAGetLastError ();
printf("error code %i",i);
}

while(1)
{

accept(sock,(sockaddr *) &sin,&lenght);

send(sock,"message du serveur\0",22,0);

}
shutdown(sock,2);
closesocket(sock);
WSACleanup();
}

3 réponses

Messages postés
2835
Date d'inscription
lundi 11 août 2003
Statut
Modérateur
Dernière intervention
16 décembre 2006
10
:big) Neodante :big)

msdn.microsoft.com ...
@+
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,
10038 : Une opération a été tentée sur autre chose qu'un socket.

Il faut créer un socket avec socket(...), la valeur de retour de cette fonction etant le socket il faut etre logique):
sock = socket(PF_INET,SOCK_STREAM,0);
J'ai moi aussi lu le gros bouquin rouge TCP/IP il y a presque 15 ans. bind() c'est probablement comme write(socket,tampon,longueur) et writev(socket, *messageblocks, lgt_of_message) ... Ce sont des fonctions unix-type qui ne marchent que sur OS multi-users axé réseau, comme linux, sinon ce serait trop facile d'aller faire du listen() sur un OS windows, lol, la securié avant tout !
Ma question est : comment envoyer un message et des drapeaux à un socket, enfin bref, peut-on seulement changer les droits d'acces d'un socket sous windows ? si non, je comprend pourquoi ecrire les server-client se fait preferentiellement sous BSD/Unix car les options dans 1 socket ou plusieurs sont ce qu'il y a de plus utile...

...en attendant winsock3.h

Des zéros et des (H)uns