begin process at 2012 05 29 08:33:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Système

 > 

Autre

 > 

erreur serveur multitheard en c


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

erreur serveur multitheard en c

jeudi 16 avril 2009 à 11:42:17 | erreur serveur multitheard en c

dyroj

salut,
j'ai créer un serveur echo en multithread et il marche a moitier sofe que par foi il confon les client.
enfin c'est un peut bizare, par exemple quand un client enfoirer une chaine de caractaire c'est un autre client qui la recoi.
bref voila ma source :

#include

<stdio.h>

#include

<winsock2.h>

#include

<windows.h>

#include

<tchar.h>

#include

"mesfonction.h"

#pragma

comment (lib,"ws2_32.lib")

 

 

typedef

struct CLIENT

{

SOCKET sock_client;

SOCKADDR_IN sin_client;

}CLIENT, *LPCLIENT;

fatal(

constchar * erreur)

{

printf(

"\nErreur type : %s\n", erreur);

exit(0);

}

DWORD WINAPI thread_client(LPVOID Pclient_void)

{

char buffer[1024]="";

LPCLIENT Pclient = (LPCLIENT)Pclient_void;

printf(

"Client\t%s:%d\tConnect\n", inet_ntoa(Pclient->sin_client.sin_addr), Pclient->sin_client.sin_port);

send(Pclient->sock_client,

"lu enfoirer\r\n", Ssize("lu enfoirer\r\n"),0);

while(1)

{

recv(Pclient->sock_client, buffer,

sizeof(buffer), 0);

send(Pclient->sock_client, buffer, Ssize(buffer),0);

}

}

void

main( int argc, char **argv )

{

//variable

WSADATA wsa;

SOCKET sock;

SOCKADDR_IN sin_serveur;

int sinsize;

DWORD idt;

LPCLIENT Pclient;

Pclient = (LPCLIENT) malloc(

sizeof(CLIENT));

if (WSAStartup(MAKEWORD(2,0), &wsa) != 0)

fatal(

"Accès au réseau impossible!!! Erreur WSAStartup");

if((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET)

fatal(

"Création de la socket!!!");

sin_serveur.sin_addr.s_addr = INADDR_ANY;

sin_serveur.sin_family = AF_INET;

sin_serveur.sin_port = htons(7);

if (bind(sock, (SOCKADDR *)&sin_serveur, sizeof(sin_serveur)) == SOCKET_ERROR)

fatal(

"Bind!!!");

if(listen(sock, 5) == SOCKET_ERROR)

fatal(

"Listen!!!");

sinsize =

sizeof(Pclient->sin_client);

printf("En attente de client...\n");

__accept_client:

if((Pclient->sock_client = accept(sock, (SOCKADDR *)&Pclient->sin_client, &sinsize)) == INVALID_SOCKET)

fatal(

"accept!!!");

CreateThread(NULL, 0, thread_client, (LPVOID) Pclient, 0, &idt);

goto __accept_client;
}
*******************

donc si quelqun pourai me dire dou vien mon erreur et surtou si c'est bien comme sa con passe un argument a un thread.
++
jeudi 16 avril 2009 à 11:48:55 | Re : erreur serveur multitheard en c

dyroj

excuser moi pour le mot enfoirer j'ai pas fai expres de le maitre.
enfoirer > envoyer
vendredi 17 avril 2009 à 19:17:25 | Re : erreur serveur multitheard en c

goodboy21

salut, ton soucis vient du fait que tu passe le même objet "Pclient" pour chaque thread, du coup tes anciennes sock sont écrasé à chaque fois que tu reçois un nouveau  client. il faut que tu utilises un pointeur  "Pclient" et que tu en crée autant fois que tu as de clients et n'oublies pas de libérer la mémoire à la fin de chaque thread. j'espère que ça d'aidera .



Cette discussion est classée dans : serveur, client, sin, sock, pclient


Répondre à ce message

Sujets en rapport avec ce message

PROBLEME CLIENT SERVER [ par zzzzzz ] Mon client marche c sur et il envoie bien abcd mais monserver marche po je suis debutant en server socket... :(je sais pas comment faire en sorte que Probleme de Client Serveur [ par Krox68 ] voila jaimerais faire un programme client qui puisse se connecter a ce serveur : #include void main(){ WSADATA WSAData; WSAStartup(MAKEWORD(2,0), &WS client serveur [ par elanspeech ] Bonjour,Je suis en train de programmer un petit client serveur en C pour windows avec dev-c++. J'obtiens l'erreur suivante a la compilation : D:\DEV-C problème socket sous windows [ par kod32 ] Voici mon code : (winsock2.h)-----------------------------int main(){ /* inialisation */ WSADATA wsa; WSAStartup(MAKEWORD(2,0), &wsa); /* [serveur]telecharger fichier [ par lombredudragon ] Avec les socket je debute et j'aimerais me faire un serveur en c ou c++ ou kan on se connect au port 23 par telnet on recoit automatiquement un fichie Client/Serveur, encore..... [ par glubust ] Je veux faire fonctionner une application client/serveur sous UNIX (client) et WINDOWS (serveur).Le programme client envoi une simple requête au serve probléme d'allocation mémoire ? [ par templeofboom ] dans le cadre du développement d'une application de socket sous devcpp je me retrouve bizarrement coincé a cause d'une erreur d'allocation mémoire à Fiabiliser transfert par socket [ par masseur ] Salut. Je vais vous expliquer mon petit problème. Je crée un client et un serveur. Des que le serveur recoit une demande il envoie un fichier en ut à vos sockets, prêt, GO [ par mimou20052005 ] à vos sockets, prêt, GO Bon voila les gars j'ai enfin pu réaliser un client et un serveur en C++ (win 32 console application), mais j'ai un petit prob Boucle de connection client TCP [ par ssmint ] Bonjour à tous,Mon dernier souci en date est de pouvoir créer une un client qui essaie de se connecter toutes les secondes.Je fais donc une boucle ave


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,484 sec (3)

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