IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

serveur tcp multithreadé (de chat) en C sous linux qui ne fonctionne pas


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Par défaut serveur tcp multithreadé (de chat) en C sous linux qui ne fonctionne pas
    Bonjour il ya trois ans j'ai essayé de faire un serveur tcp multithreadé en C sous linux (de chat) qui ne fonctionne pas je n'ai pas trouvé pourquoi.(de même je vais surement le poster dans la rubrique Qt, j'avais essayé après de faire un serveur multithreadé tcp de chat en C++ Qt et il ne fonctionnait pas non plus).
    pourtant j'avais trouvé après des exemples de serveurs tcp multithreadés sous linux sur le net qui avaient l'air dêtre fait de la même manière.j'avais fait aussi des clients tcp mais en c++.
    donc je vais ressortir du code au cas ou quelqu un aurait de l'experience ou des suggestions:

    dans le main j'ai entres autres : dans la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int tcp_server(int port)
    {
    j'ai notamment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sock=create_socket_stream(NULL,port,"tcp");
    plus loin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    linked_sock = accept(sock,(struct sockaddr*)&address,&length);
    plus loin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    p[i].socket=linked_sock;
    		p[i].threadindex=i;
    		fprintf(stdout,"socket %d accepted\n",linked_sock);	 	
    		ret=pthread_create(&thread[i],NULL,process_connection,(void *)&p[i]);
    où est defini en global
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct paramthread{
    	int socket;
    	int threadindex;
    }PARAMTHREAD;
    PARAMTHREAD p[MAX_CLIENTS];
    et dans la fonction de thread process_connection je fais notamment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ptmp=(PARAMTHREAD *)p;
    	sock=ptmp->socket;
    	thrdidx=ptmp->threadindex;
    et aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while(1)/*loop to receive msgs from client*/
    	{
    		nb_read=read(sock,buffer,MAXBUFSIZE);
     
                   /*........................*/
                  write(sock,buffer,strlen(buffer));
    bon voila à peu près...si quelqu un a déja réussi à faire un serveur tcp multithreadé en C sous linux je suis preneur d'idées....

  2. #2
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    C'est beaucoup de code sans vraiment expliquer ce qui ne marche pas. En principe, chaque fonction a une solution pour vérifier un code d'erreur. Cela devrait être relativement simple de savoir où cela bloque et pourquoi...

  3. #3
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Par défaut
    il me semble me rappeler que le client plantait sur l'appel du premier write apres le connect au serveur et renvoyait un signal.il faut que je refasse du debug du client....

  4. #4
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Par défaut
    il y avait aussi un autre probleme en plus que je viens de corriger dans le serveur et le client quand je faisais des write il fallait mettre une longueur strlen(buffer)+1 en troisieme parametre et non pas strlen(buffer)

Discussions similaires

  1. [CSS 2] Sous menu qui ne fonctionne pas sous IE7
    Par dolphi dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 07/03/2009, 23h06
  2. requete SQL avec sous requete qui ne fonctionne pas
    Par skyarnangel dans le forum Langage SQL
    Réponses: 8
    Dernier message: 06/02/2009, 14h47
  3. Réponses: 1
    Dernier message: 20/04/2008, 19h02
  4. Sous requete qui ne fonctionne pas
    Par Guillomme dans le forum Langage SQL
    Réponses: 5
    Dernier message: 24/10/2007, 15h01
  5. Réponses: 8
    Dernier message: 11/07/2007, 09h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo