Probleme recv() [Winsock]
Je devellope depuis peu une petit serveur web pour mon savoir personnel seulement voila a peine je commence que les problemes se posent...
J'avais jadis un probleme avec la fonction bind() mais il est maintenant résolus. Désormais c'est la fonction recv qui viens m'embeter.
En effet mon programme arrive a emmetre avec send() mais ne parviens pas a recevoir donc avec recv()
Voici mon code
Code:
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 29 30 31 32 33 34 35 36 37
| #include <winsock2.h>
#include <windows.h>
int main()
{
WSADATA wsaData;
int sock,sock2;
if(WSAStartup(MAKEWORD(2,2),&wsaData))
{printf("Bug : WSAStartup\n");}
sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(sock==INVALID_SOCKET)
{printf("Bug : Socket\n");}
SOCKADDR_IN service;
service.sin_family=AF_INET;
service.sin_addr.s_addr=INADDR_ANY;
service.sin_port=htons(80);
if((bind(sock,(SOCKADDR *)&service,sizeof(service)))==SOCKET_ERROR)
{printf("Bug : Bind <Liaison>\n");}
if(listen(sock,0)==SOCKET_ERROR)
{printf("Bug : Listen <Ecoute>\n");}
char *Buffer;
while(1)
{
sock2=accept(sock,NULL,NULL);
//send(sock2,"test",sizeof("test"),0);
recv(sock2,Buffer,sizeof(Buffer),0);
MessageBox(0,Buffer,Buffer,0);
}
} |
J'ai procédé à mes test avec le client telnet ainsi que le client putty mais le recv() me renvois toujours <null> (observé avec printf) :(
Re: Probleme recv() [Winsock]
Citation:
Envoyé par kernox
J'ai procédé à mes test avec le client telnet ainsi que le client putty mais le recv() me renvois toujours <null> (observé avec printf) :(
recv renvoi un int donc caa m'etonnerai qu'il renvoi NULL, tu as lu le man de recv?
C'est pas le tout de verifier les codes de retour, et d'afficher une erreur faydrait p-e faire quelque chose non? (sortir de la fonction , du programme...)
Citation:
Code:
1 2
|
sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); |
Euh non...
Code:
1 2
|
sock = socket(AF_INET, SOCK_STREAM, 0); |
Ca oui.
Citation:
Code:
1 2 3 4
|
service.sin_family=AF_INET;
service.sin_addr.s_addr=INADDR_ANY;
service.sin_port=htons(80); |
Ca ca parait bon...
Citation:
Code:
1 2 3 4
|
char *Buffer
[...]
recv(sock2,Buffer,sizeof(Buffer),0); |
Bon , faudrait peut-etre apprendre le C avant de faire des sockets non?
Pas de taille allouée pour Buffer
sizeof(Buffer) vaut 4 (taille d'un pointeur)
Sans être méchant, essaye de faire des programmes simples, avant de faire un serveur Web...
Re: Probleme recv() [Winsock]
Citation:
Envoyé par Skyrunner
Code:
1 2
|
sock = socket(AF_INET, SOCK_STREAM, 0); |
Code:
1 2
|
sock = socket(PF_INET, SOCK_STREAM, 0); |
Protocol Family...