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

cs_alfred Messages postés 5 Date d'inscription vendredi 11 janvier 2002 Statut Membre Dernière intervention 11 mai 2004 - 7 févr. 2002 à 15:38
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);

}

2 réponses

skysee Messages postés 29 Date d'inscription mercredi 30 janvier 2002 Statut Membre Dernière intervention 28 septembre 2007
7 févr. 2002 à 18:47
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.
0
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
ma socket est bien positive et je ne vois tjrs pas d'ou cela peut venir
0
Rejoignez-nous