/**** À utiliser avec le serveur gérant des select **/ #include #include #include #include #include #include #include #include int main (argc, argv) int argc; char **argv; { static char MESSAGE[] = "Message emis par "; struct sockaddr_in6 serveur; /* * description du socket du serveur */ int sock; /* * descripteur du socket local */ struct hostent *m_cible; /* * description de la machine cible */ char Nom_Local[64]; if (argc != 3) { printf ("Utilisation: %s machine_cible num_port\n", argv[0]); exit (1); } /* Création de la socket pour envoyer un texte vers le serveur */ if ((sock = socket (PF_INET6, SOCK_DGRAM, 0)) < 0) { perror ("Ouverture socket client"); exit (1); } /* Nom du serveur */ if ((m_cible = gethostbyname2 (argv[1], AF_INET6)) == (struct hostent *) 0) { printf ("%s: machine cible inconnue\n", argv[1]); exit (2); } memcpy (&serveur.sin6_addr, m_cible->h_addr, m_cible->h_length); serveur.sin6_family = AF_INET6; serveur.sin6_port = htons (atoi (argv[2])); gethostname (Nom_Local, sizeof Nom_Local); sprintf (MESSAGE + 20, " pid %d sur %s", getpid (), Nom_Local); while (1) { printf ("Envoi de datagramme vers %s\n", argv[1]); if (sendto (sock, ..., strlen (...), 0, ..., sizeof (serveur)) < 0) { perror ("Écriture sur socket serveur"); } sleep (5); } close (sock); return 0; }