begin process at 2012 05 30 09:14:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Serveur Vc++6 pb dans recv


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Serveur Vc++6 pb dans recv

vendredi 15 février 2002 à 11:05:48 | Serveur Vc++6 pb dans recv

alfred

Salut a tous

J'ai un probleme dans mon serveur et je ne sais pas comment le resoudre. Le client se connecte bien et envoie le bon nombre de caracteres et le serveur accepte la demande de connexion mais le recv renvoie la valeur -1 et le buffer reste inchangé. Toutes les sockets sont positives.

voici le source du serveur :
/************************
Le Serveur
************************/

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

#define PORT 6000
#define MAX_CLIENTS 5 // just used for cl
void serveur()
{
SOCKET socketserveur;
//int Appelantlen;
int i=0;
SOCKADDR_IN localaddr ;
char buf[11];
int nbcar = 0;
int size;
WSADATA wsaData;
WORD wVersionRequested;
wVersionRequested = MAKEWORD( 2, 2 );
WSAStartup( wVersionRequested, &wsaData );
int number_of_clients = 0;
unsigned int client[MAX_CLIENTS]; // socket handles to clients
sockaddr client_sock[MAX_CLIENTS]; // info on client sockets



int error = WSAStartup (0x0202, &wsaData); // Fill in w

if (error)
{ // there was an error
return;
}
if (wsaData.wVersion != 0x0202)
{ // wrong WinSock version!
WSACleanup (); // unload ws2_32.dll
return;
}



socketserveur = socket(AF_INET, SOCK_STREAM, 0);

localaddr.sin_family = AF_INET; /* Protocole internet */
localaddr.sin_addr.s_addr = htonl(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 */


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

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

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

sprintf(buf, "Whatever");

printf("buf = %s\n",buf);


while (number_of_clients < MAX_CLIENTS) // let MAX_CLIENTS connect
{ size = sizeof(struct sockaddr);printf("size %d",size);
client[number_of_clients] = // accept a connection
accept (socketserveur,(LPSOCKADDR)&client_sock[number_of_clients],&size);
puts("pret");
if (client[number_of_clients] == INVALID_SOCKET)
{ // error accepting connection
puts("pret");
WSACleanup ();
return;
}
else
{ // client connected successfully
// start a thread that will communicate with client
nbcar = recv(socketserveur, buf, sizeof(buf),0);
printf("nb = %d",nbcar);
printf("buffer = %s\n",buf);

number_of_clients++;
}
}




//Appelantlen = sizeof(localaddr);
//accept(socketserveur,(sockaddr)&localaddr, &Appelantlen);



shutdown(socketserveur,0);

WSACleanup( );

}

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

/**********************
Le Client
**********************/

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

#define PORT 6000




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

SOCKET socketclient;
int i=0;


int nbcar = 0;
WSADATA wsaData;
WORD wVersionRequested;
int test,con;
int taille;
SOCKADDR_IN name;


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


socketclient = socket(AF_INET, SOCK_STREAM, 0);

printf("socket = %d \n",socketclient);

//Affectation des informations sur l'addresse du serveur auquel on veut se connecter
//char FAR * nom_machine;
//struct in_addr in;
const char * Host="192.168.2.1";

name.sin_family = AF_INET;
name.sin_port = htons(PORT);
name.sin_addr.S_un.S_addr = inet_addr(Host);
taille = sizeof(struct sockaddr);
printf("addresse=%ld\n",&name.sin_addr.S_un.S_addr);
con = connect(socketclient,(LPSOCKADDR)&name,taille);

printf("con = %d",con);
char buffer[11]; // buffer that is 11 characters big
sprintf (buffer, "ca marche");

test =send (socketclient, buffer, sizeof(buffer), 0);


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

}



Cette discussion est classée dans : int, serveur, include, socket, wsadata


Répondre à ce message

Sujets en rapport avec ce message

Erreur de segmentation d'un simple client http sous linux !! [ par nassimatique ] #include #include #include #include #include #include #include #define TAILLE 4096 <b socket trop lents [ par cid7777777 ] bonjour,jessaye de faire un jeu qui peu se jouera 2 en reseau local.je ne connais absolument rien en reso, mais en fouillant sur le net,  jai trouver socket raw [ par moi zork ] Bonjour,Je suis entrain de m'entrainer sur les socket raw et je bute sur :#include #include using namespace std;int main (void){    int sock;  sock = Unix: sockets & Co [ par bounkolh ] Bonjour, Je cherche de l'aide pour compléter les ............ du fichier client.c permettant d'interroger le serveur implementé par server.c. Listing Fin de recv [ par Ziman ] Bonjour,je fais actuellement une chtite application. J'aimerai juste qu'un client se connecte sur un serveur et qu'il puisse lui envoyer des messages. encore mon serveur [ par skysee ] bonjour,je suis toujours avec mon serveur en c sous visual c++ sous windows(sis eulement j'avais linux).Le problème est que je n'ai pas d'erreur de co winsock probleme 2 [ par greg13 ] J'ai une erreur de compilation dans le code suivant :#include #include #include #pragma comment(lib, "wsock32.lib")SOCKET Sock;int main(int argc, char Probleme reception sur un serveur windows en vc++ [ par alfred ] Salut a tous!!g un probleme dans mon serveur le recv renvoie la valeur -1 et je ne vois pas pouquoi, toute mes socket sont positives le client envois Thread et socket besoin de conseil [ par kawito ] Salut,je desire realiser un client/serveur TCPle probleme est que les fonctions accept et recv sont bloquante.donc cela bloque l'affichage etc...mon p socket [ par flatou ] salutvoila le code du serveur sous dos que j'ai fait :#include #include #include #pragma comment(lib, "ws2_32.lib")SOCKET s;SOCKET c;SOCKET result;soc


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales