C-Grand debutant, cherche tutos en C

Nostaroth Messages postés 14 Statut Membre -  
zabbi Messages postés 35 Statut Membre -
Voila j'aimerai pouvoir fair un tchat, je suis grand debutant en C j'ai fini d'aprendre tout ce qu'il y a sur le site du zero (sauf la partie C++) et je voudrai trouver un tuto pour m'aider a fair ce que je cherche, merci d'avance.

Et si vous avez quelque bon tuto pour que j'aprofondisse mes connaissance c'est pas mal aussi
=D
Configuration: Windows XP
Firefox 2.0.0.5

2 réponses

  1. zabbi Messages postés 35 Statut Membre 4
     
    slt.

    essaie de lire un peu sur les socket. car c'est la partie importante pour réaliser un chat

    A+
    0
  2. Nostaroth Messages postés 14 Statut Membre 1
     
    oui, j'ai apris grand nombre de chose sur les socket, mais lorsque je fai un send(); le texte ne s'affiche pas sur le serveur
    0
    1. zabbi Messages postés 35 Statut Membre 4
       
      slt .
      je vais t'envoyer un programme qui marche il permet d'envoyer un message et de recevoir aussi.

      c en dommaine internet mode connecté.

      il ya trois fichier : tcp.h

      #include<sys/types.h>
      #include<sys/socket.h>
      #include<sys/param.h>
      #include<string.h>
      #include<sys/un.h>
      #include<stdio.h>
      #include<netinet/in.h>
      #include<arpa/inet.h>
      #include<errno.h>
      #include<netdb.h>
      #define PORT 2222
      //12
      void envoie(int,int*,char []);
      struct sockaddr_in init_addr_c(void);
      void reception(int,int*,char[]);
      struct sockaddr_in init_addr(void);
      void str_replace(char [],int);

      struct sockaddr_in init_addr_c(void)
      {
      struct sockaddr_in addr2;
      struct hostent *h;
      char serveur[31];
      bzero(&addr2,sizeof(addr2));
      printf("L'adresse du serveur : ");
      gets(serveur);
      if((h=gethostbyname(serveur))==NULL)
      perror("gethostbyname : ");
      bcopy((char*)h->h_addr,(char*)&addr2.sin_addr,h->h_length);
      //addr2.sin_family=h->h_addrtype;
      addr2.sin_family=AF_INET;
      addr2.sin_port=htons(PORT);
      //addr2.sin_addr.s_addr=inet_addr(serveur);
      return addr2;
      }

      struct sockaddr_in init_addr(void)
      {
      struct sockaddr_in addr;
      bzero(&addr,sizeof(addr));
      addr.sin_family=AF_INET;
      addr.sin_port=htons(PORT);
      addr.sin_addr.s_addr=INADDR_ANY;
      return addr;
      }

      void reception(int acc,int* len,char msg[])
      {
      int nb;
      nb=read(acc,len,sizeof(*len));
      nb=read(acc,msg,*len);
      msg[nb]='\0';
      printf("lui :%s\n",msg);
      printf("\n");
      }

      void envoie(int s,int* len,char msg[])
      {
      printf("Vous :");
      gets(msg);
      *len=strlen(msg);
      write(s,len,sizeof(int));
      write(s,msg,*len);
      }
      les deux autres fichiers : client
      #include"tcp.h"
      main()
      {
      int s,b,a,lg,acc,len,nb,len_addr;
      char msg[100];
      struct sockaddr_in addr2;
      addr2=init_addr_c();
      printf("sddd\n");
      if((s=socket(AF_INET,SOCK_STREAM,0))==-1)
      perror("erreur de creation\n");
      else
      {
      printf("socket creee\n");
      if(connect(s,(struct sockaddr*)&addr2,sizeof(addr2))==-1)
      perror("connect ");
      else
      {
      printf("Connection établie\n");
      while(strcmp(msg,"quit"))
      {
      envoie(s,&len,msg);
      reception(s,&len,msg);
      }
      }
      }
      close(s);
      }


      le troisieme: serveur:


      #include"tcp.h"
      #define PORT 5222

      main()
      {
      int s,lg,acc,len;
      char msg[100];
      struct sockaddr_in addr,addr2;
      addr=init_addr();
      if((s=socket(AF_INET,SOCK_STREAM,0))==-1)
      perror("erreur de creation\n");
      else
      {
      lg=sizeof(struct sockaddr);
      if(bind(s,(struct sockaddr*)&addr,sizeof(addr))==-1)
      perror("bind :");
      else
      {
      printf("je commence le listening\n");
      if(listen(s,1)==-1)
      perror("listen :");
      else
      {
      lg=sizeof(struct sockaddr_un);
      bzero(&addr2,sizeof(addr2));
      if((acc=accept(s,(struct sockaddr*)&addr2,&lg))==-1)
      perror("accept :");
      else
      {
      printf("connection etablie\n");
      while(strcmp(msg,"quit"))
      {
      reception(acc,&len,msg);
      envoie(acc,&len,msg);
      }
      close(acc);
      }
      }
      }
      close(s);
      }
      }




      a+;

      essaie de l'executer aprés je t'envoyer la version finale avec les wizz, le choix des pseudo et tt

      mais je dois le raffiner un peu.

      a+
      0