[C] comment

Résolu
Bonjour Svp je voudrais savoir comment utiliser le langage C pou écrire un programme qui connecte deux ordinateurs?Puis qu'est-ce que 'pipe'?Au secours et Merci d'avance!!laraby
Configuration: windows 32/16 bits

4 réponses

  1. Contributeur
    programme de base:

    CLIENT:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <netdb.h>
    #include <unistd.h>
    
    #define PORT 20100
    
    void main()
    {
        int sk,addrlen,nbr;
        struct sockaddr_in myaddr;
        char buffer[40];
        struct hostent *host_addr;
        char retour[] = "Message retour du client";
    
        //creation socket
        if((sk=socket(AF_INET,SOCK_STREAM,0))== -1)
        {
    	perror("prog client erreur appel socket");
        }
    
        host_addr=gethostbyname("localhost");
    
        myaddr.sin_addr.s_addr=((struct in_addr *)(host_addr->h_addr))->s_addr;
        myaddr.sin_port=PORT;
    //    myaddr.sin_port=htons(PORT);
        myaddr.sin_family=AF_INET;
    
        //demande de connexion
        addrlen=sizeof(struct sockaddr_in);
        if(connect(sk,(struct sockaddr*)&myaddr,addrlen)==-1)
        {
    	perror("prog client erreur appel connect");
    	return;
        }
    
        //reception donnees
        if((nbr=read(sk,buffer,40))==-1)
        {
    	perror("erreur appel read");
        }
        printf("buffer recu: %s\n",buffer);
    
        //repond au serveur
        if((nbr=write(sk, retour,strlen(retour)+1))==-1)
        {
    	perror("erreur appel write");
        }
        if(close (sk)==-1)
        {
    	perror("erreur appel close");
        }
    }
    
    
    

    0
    1. Contributeur
      SERVEUR:

      #include <string.h>
      #include <stdio.h>
      #include <stdlib.h>
      #include <sys/types.h>
      #include <sys/socket.h>
      #include <netinet/in.h>
      #include <netdb.h>
      #include <unistd.h>
      
      #define PORT 20100
      
      void main(void)
      {
          int ls,sk,nbr;
          struct sockaddr_in myaddr;
          struct sockaddr_in remaddr;
          char buffer[40];
          unsigned int addrlen;
          char message[]="Message du serveur";
      
          if (( ls = socket(AF_INET, SOCK_STREAM, 0)) == -1 )
          {
      	printf("erreur appel socket");
          }
          memset (&myaddr, 0, sizeof(myaddr));
      
          myaddr.sin_port = PORT;
      
          myaddr.sin_family = AF_INET;
      
          if ( bind(ls,(struct sockaddr*)&myaddr, sizeof(struct sockaddr_in)) == -1)
          {
      	perror("erreur bind");
          }
      
          if ( listen (ls,1) == -1 )
          {
      	printf("erreur listen");
          }    
          
          addrlen = sizeof(struct sockaddr_in);
      
          if (( sk = accept(ls,(struct sockaddr*) &remaddr,&addrlen)) == -1 )
          {
      	printf("erreur accept");
          }
      
          if ( (nbr=write(sk,message,strlen(message)+1)) == -1 )
          {
      	printf("erreur write");
          }
      
          if (( nbr = read(sk,buffer,40)) == -1 )
          {
      	printf("erreur read");
          }
      
          printf("j ai recu :%s \n",buffer);
      
          close(sk);
          if(close (sk)==-1)
          {
      	perror("erreur appel close");
          }
      
          if(close (ls)==-1)
          {
      	perror("erreur appel close");
          }
      
      }
      
      
      
      

      0
      1. salut je voulais juste savoir comment écrire un programme qui nous sort les coordonnées de déplacement de la souris sur un graphique ou tracé mathématique c urgent merçi d'avance.Vous me sauvais la face.
        0
        1. comment programmé un routeur filtre de paquets avec c++ puildre
          0