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);
}