[C] comment

Résolu/Fermé
Laraby - 7 avril 2005 à 13:24
 ali - 8 mai 2005 à 19:57
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

4 réponses

Canard007 Messages postés 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215
7 avril 2005 à 13:45
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
Canard007 Messages postés 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215
7 avril 2005 à 13:46
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
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
comment programmé un routeur filtre de paquets avec c++ puildre
0