Hello,
j'ai lu un peu partout que le recv est bloquant, hors chez moi ca n'est pas le cas.
int lgdonneesinout;
lgdonneesinout = sizeof(sockaddr);
cout<<"Listening"<<endl;
val=accept(sock, (SOCKADDR *)&csin, &lgdonneesinout);
cout<<"Accepted :"<<val<<endl;
if(val != INVALID_SOCKET)
{
char buffer[50];
lgdonneesinout=recv(sock,buffer,50,0);
if (lgdonneesinout==SOCKET_ERROR) printf("recv failed: %d\n", WSAGetLastError());//10057:not connected
cout<<buffer<<endl;
Je lance le serveur. il m'affiche Listening
Et des qu'un client se connect
sans rien envoyer, il m'affiche "Accepted" puis n'importe dans le buffer quoi et une erreur 10057.Comme si le recv avait recu quelque chose.
(Si vous voulez les definitions des socket etc dites le moi, mais j'ai pris le tuto de theWalrus sur developpez.com)
Qu'ai je fait de travers?
Merci
PS: pour info, le code du client:
int envoyed;
char * sendbuf = "Client: sending data test";
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr = inet_addr("127.0.0.1");
sin.sin_family = AF_INET;
sin.sin_port = htons(6969);
connect(sock, (SOCKADDR *)&sin, sizeof(sin));
cout<<"attente pour envoyer"<<endl;
cin>>f;
envoyed=send(sock, sendbuf, strlen(sendbuf), 0);
cout<<"Envoye:"<<envoyed<<endl;
shutdown(sock,SD_BOTH);