begin process at 2010 02 09 15:28:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Réseau / Internet

 > 

probleme avec des sockets


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

probleme avec des sockets

lundi 8 mai 2006 à 11:18:13 | probleme avec des sockets

ratp

Bonjours à tous

J'ai un probleme avec mon programme client serveur.
Je voudrais que vous m'aidiez à créer un serveur simple et multi-client

Je voudrais faire un programme de Tchat en console multithread est simple en langage C
pouvez vous m'aider svp.
/*********************Client***************/
voici le programme principale main
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include "raz.h"
#include "systeme.h"
#include "test_pseudo.h"
#include <winsock2.h> //librairie de socket Windows

#pragma comment(lib, "ws2_32.lib")


int main(int argc, char *argv[])
{

    char tab_pseudo[26];                                //stockage du pseudo
    char bufferrev[50];
    char ip[15];
    char host[50];                                        //Nom de la machine
    int tempo=0,length_pseudo=26;           
    unsigned int i=0;                                    //initialialisation des variables
    int recevoir=0,port=0;
    int length_sin;

    WSADATA WSAData;                                    //initialisation d'une variable WSADATA utilise pr le demarrage de WSAStartup()
    WSAStartup(MAKEWORD(2,0), &WSAData);                //informe l ordinateur qu on vas utiliser les sockets parm 1 =2 pour la version de Winsock Param 2= adresse de WSAData

    SOCKET sock;                                        //initialisation d une variable du type SOCKET
    SOCKADDR_IN sin;                                    //stokage des informations technique du socket
    sin.sin_addr.s_addr    = inet_addr(ip);
    sin.sin_family= AF_INET;                            //famille du socket de type internet
    sin.sin_port= htons(port);                            //port sur lequelle on veut se connecter
    sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);        //la création du socket param 1 famille du socket param 2 permet ouvrir une communication entre les 2 ordinateurs directe
    bind(sock,(SOCKADDR *)&sin,sizeof(sin));            //Permet d attacher directement au port et a l 'adresse defini
   

   
    systeme();
   
    clear_tableau(tab_pseudo,length_pseudo);            //fonction raz.h
    length_sin=sizeof(sin);
   
    printf("Veulliez saisir votre prenom : \n");       
   
    gets(tab_pseudo);                                   
   
    test_pseudo(tab_pseudo);
   

    printf("Veulliez indiquer le numero de port: ");
    scanf("%d",&port);
   
    printf("Veuillez donner l adresse IP du serveur: ");
    scanf("%s",&ip);

    printf("Test de connection en cours...\n");



    gethostname(host,sizeof(host));

    printf("Bonjour %s\n",tab_pseudo);
    printf("Vous etes connecte au PC %s votre adresse IP est %s\n",host,ip);
   
    memset(bufferrev,0,sizeof(bufferrev));

    if(connect(sock,(SOCKADDR*)&sin,sizeof(sin)))
    {
       
        printf("La connection a echoue\n");
        system("PAUSE");
        exit(0);
    }
        while(tempo>-1)
    {    sendto(sock,tab_pseudo,6,0,(SOCKADDR*)&sin,sizeof(sin));
       
        scanf("%s",&bufferrev);
        tempo=send(sock,bufferrev,sizeof(bufferrev),0);
        memset(bufferrev,0,sizeof(bufferrev));
        recvfrom(sock,bufferrev,sizeof(bufferrev),0,(SOCKADDR*)&sin,&length_sin);
        printf("%s\n",bufferrev);
        memset(bufferrev,0,sizeof(bufferrev));
       
    }
   

    printf("Connection termine\n");
    WSACleanup();
    getch();
    system("PAUSE");
    return 0;
}
//ici  c raz.h
void clear_tableau(char tab[],int length_tableau)
{
    int raz;
        for(raz=0;raz<length_tableau;raz++)                    //nettoyage de la mémoire
        {
            tab[raz]=0;                                    //raz Remise a zero
        }
}
//systeme.h
   

    void systeme(void)
    {
        system("TITLE programme Tchat Client version 0.9");
        system("COLOR fc");
    }
//test_pseudo.h
#include <stdio.h>
#include <string.h>


void test_pseudo(char tableau[])
{
    int unsigned i;
    for(i=0;i<strlen(tableau);i++)
    {
     while(tableau[i]<0x41||tableau[i]>0x5A&&tableau[i]<0x61||tableau[i]>0x7A)
     {
      printf("0\n");
      printf("Veulliez saisir votre prenom : \n");        //saisi pseudo
      gets(tableau);//lire pseudo
      for(i=0;i<strlen(tableau);i++)
      {
       printf("%c",tableau[i]);
       if(tableau[i]<0x41||tableau[i]>0x5A&&tableau[i]<0x61||tableau[i]>0x7A)
       {
        printf("\nErreur vous avez saisi %c",tableau[i]);
       }
       else
       {
           break;
       }
      }
     }
  
    }
}



RATP
mardi 9 mai 2006 à 14:25:50 | Re : probleme avec des sockets

turnerom

Jette un oeil a une de mes sources, ca t'aidera surement (enfin je l'espere)
http://www.cppfrance.com/codes/ECHANGE-FICHIER-AVEC-SERVEUR-MULTICLIENT_30629.aspx

TuRn3r


Cette discussion est classée dans : tableau, printf, pseudo, sin, bufferrev


Répondre à ce message

Sujets en rapport avec ce message

Les chaines de caractère et biens d'autres problemes. Si vous voulez aider un nouveau ds l'art du C vous etes servi!!! [ par Lavieillefolle ] Voilà voilà j'ai écris un code, enfin g tanter d'écrire et comme vous allez le constater je ne possede aucune experience. Alors si vous pourriez résou ponté sur une valeur pour l'éliminé [ par sturnarbo ] énoncé:/*Ecrire un programme qui lit un entier X et un tableau A du type int au clavieret élimine toutes les occurrences de X dans A en tassant les él pb socket [ par surfeurnet ] voici mon programme qui a pour l'instant pour unique but de se connecter à un serveur :# include # include # pragma comment (lib,"w32_32.lib")char ip, Problem Affichage de mon Tableau [ par Orezza ] salut à tous, j'ai un blem à l'affichage du tableau. l'utilisateur parametre son tableau, c lui qui l'initilize mais j'arrive pas à afficher apres le Blem Somme ELmt d'un Tableau Bidimensionnel [ par Orezza ] Slt c encore moi, le boulet de l'info...c tjrs le meme prog mais cette fois ci j'aimerais afficher la somme des elmts de mon tableaux.#include #includ tableau unidimensionnel .... [ par slowlover ] j'ai fais un tableau unidimensionnel dont voici l'algorithme:#includeint main(){//declarationsfloat tab[10];int i;for(i=0;i{printf("entrez la valeur % smtp en socket [ par XKaliBur ] J'ai essayer de faire le plus simple possible mais ça marche pas... est-ce que quelqu'un aurais une idée... Parce que quand je le fait en telnet ça ma [C] Probleme Socket [ par firemax ] Voila le code : En gros je sais pas qu'elle est le probleme et je n'est aucun message d'erreur :D [code]#include "lib.h" int main() {     int sock prb a la compilation vous vc++ [ par shadow1779 ] Bonjour,j'ai tenté de faire un programme en C utilisant les sockets, la personne qui lance son programme choisi elle meme l'ip et le port a se connect


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

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

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