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

Signaler
Messages postés
5
Date d'inscription
vendredi 11 janvier 2002
Statut
Membre
Dernière intervention
11 mai 2004
-
Messages postés
5
Date d'inscription
vendredi 11 janvier 2002
Statut
Membre
Dernière intervention
11 mai 2004
-
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);

}

2 réponses

Messages postés
29
Date d'inscription
mercredi 30 janvier 2002
Statut
Membre
Dernière intervention
28 septembre 2007

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.
Messages postés
5
Date d'inscription
vendredi 11 janvier 2002
Statut
Membre
Dernière intervention
11 mai 2004

ma socket est bien positive et je ne vois tjrs pas d'ou cela peut venir