Probleme de reception dans un serveur visual C++ pour windows

Messages postés
5
Date d'inscription
vendredi 11 janvier 2002
Statut
Membre
Dernière intervention
11 mai 2004
- - Dernière réponse : cs_alfred
Messages postés
5
Date d'inscription
vendredi 11 janvier 2002
Statut
Membre
Dernière intervention
11 mai 2004
- 11 févr. 2002 à 00:41
Salut a tous!!

g un probleme dans mon serveur le recv renvoie la valeur -1 et je ne vois pas pouquoi.

voici les source du client et du serveur

Le Serveur :

#include <winsock2.h>
#include <winsock.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>

#define port 15300

void serveur()
{
int socketserveur = 0;
int Appelantlen;int i=0;
struct sockaddr_in localaddr ;
char buf[50];
int nbcar = 0;
int test;
WSADATA wsaData;
WORD wVersionRequested;
wVersionRequested = MAKEWORD( 2, 0 );
WSAStartup( wVersionRequested, &wsaData );

localaddr.sin_family = AF_INET; /* Protocole internet */
localaddr.sin_addr.s_addr = INADDR_ANY; /* Toutes les adresses IP de la station */
localaddr.sin_port = htons(port); /* port d'écoute par défaut au dessus des ports réservés */

socketserveur = socket(AF_INET, SOCK_STREAM, 0);

if(socketserveur == INVALID_SOCKET)
{
perror("socket");exit(3);
}

if (bind(socketserveur,(struct sockaddr*)&localaddr,sizeof(localaddr) ) == SOCKET_ERROR)
{
printf("erreur bind\n");
exit(1);
}

if (listen(socketserveur,10) == SOCKET_ERROR)
{
printf("erreur listen\n");
exit(2);
}

Appelantlen = sizeof(localaddr);
test = accept(socketserveur,(struct sockaddr*)&localaddr, &Appelantlen);
printf("test = %d",test);
nbcar = recv(socketserveur,buf,50,0);
// perror("recv");
//catch(Exception e) {printf("\n ****** erreur = %s",e);}
printf("\n nbcar = %d\n",nbcar);
printf("buffer = %s\n",&buf);

shutdown(socketserveur,0);

WSACleanup( );

}

void main()
{
char car = 'a';
printf("%x", car);
serveur();
}

le client :

void main(int argc, char **argv){

int socketclient = 0;
int Appelantlen;int i=0;
struct sockaddr_in localaddr ;
char buf[255];
int nbcar = 0;
WSADATA wsaData;
WORD wVersionRequested;
int test,con,out,err;
struct hostent * host;
long int taille;
char * nom_machine;
struct sockaddr_in name;
struct in_addr in;
short af;

wVersionRequested = MAKEWORD( 2, 0 );
WSAStartup( wVersionRequested, &wsaData );

socketclient = socket(AF_INET, SOCK_STREAM, 0);
printf("socket = %d \n",socketclient);
gethostname(&nom_machine,1000);

printf("nom_machine = %s",&nom_machine);
host = gethostbyname(&nom_machine);

memcpy(&in.S_un.S_addr,host->h_addr_list[0],host->h_length);


name.sin_family = AF_INET;
name.sin_port = htons(PORT);
name.sin_addr = in;
taille = sizeof(name);
con = connect(socketclient,(struct sockaddr *)&name,taille);

printf("con = %d",con);

test = send(socketclient,"ca marche",strlen("ca marche"),0);

printf("test = %d",test);
closesocket(socketclient);

}
Afficher la suite 

2 réponses

Messages postés
29
Date d'inscription
mercredi 30 janvier 2002
Statut
Membre
Dernière intervention
28 septembre 2007
0
Merci
salut,
je pense que ca vient de la socket du serveur,
je voudrais savoir la valeur de ta socket (socketserveur).
Il faut absolument que ta socket soit positive.
Commenter la réponse de skysee
Messages postés
5
Date d'inscription
vendredi 11 janvier 2002
Statut
Membre
Dernière intervention
11 mai 2004
0
Merci
ma socket est bien positive et je ne vois tjrs pas d'ou cela peut venir
Commenter la réponse de cs_alfred