Envois des paquets UDP, voilà un petit pgm C sommaire mais efficace, tu peux augmenter la taille des paquets, c’est la ligne
sendto(douille,“Pouet pouet tagada!”,19,0,(struct sockaddr *) & adresse,
sizeof (struct sockaddr_in));
Change la chaine «Pouet pouet tagada» et la longueur (19).
Tu n’as pas besoin que la machine écoute à l’autre bout.
[code]#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <stdio.h>
#include <signal.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>
#define PORT 1960
struct sockaddr_in desc_douille;
int verbeux = 0;
void erreur(message)
char *message;
{
if (verbeux) {
printf(“Erreur %s\n”,message);
perror("Message d’erreur: ");
}
exit(1);
}
int cree_douille_udp (broadcast)
int broadcast;
{
int sock;
if ((sock = socket (AF_INET, SOCK_DGRAM, 0)) < 0) {
erreur (“création douille”);
return (-1);
}
setsockopt(sock,SOL_SOCKET,SO_BROADCAST, &broadcast,sizeof(broadcast));
return (sock);
}
void ausecours()
{
printf(“sendudp [-a destination] [-p port] [-v] [-h] [destination]\n”);
printf(“Envoi de paquets UDP à la machine destination\n”);
exit(2);
}
main(argc,argv)
int argc;
char **argv;
{
int douille,i,j;
char buffer[256];
struct sockaddr_in adresse;
struct hostent * hostent = NULL;
struct servent * servent = NULL;
struct protoent * protoent = NULL;
char *hote = NULL;
int prt = PORT;
int option;
while ((option = getopt(argc,argv,“p:a:vh”)) != -1) {
switch(option) {
case ‘a’:
hote = optarg;
break;
case ‘p’:
sscanf(optarg,"%d",&prt);
break;
case ‘v’:
verbeux = 1;
break;
case ‘h’:
case ‘?’:
default:
ausecours();
break;
}
}
if ((hote == NULL) && (optind < argc)) hote = argv[optind];
if (hote == NULL) ausecours();
douille = cree_douille_udp(1);
if (hote != NULL)
if ((hostent = gethostbyname (hote)) == NULL) {
erreur (“gethostbyname”);
return (-1);
}
if ((protoent = getprotobyname (“udp”)) == NULL) {
erreur (“getprotobyname”);
return (-1);
}
memset (& adresse, 0, sizeof (struct sockaddr_in));
adresse . sin_family = AF_INET;
if (prt != 0) adresse.sin_port = htons(prt);
else adresse . sin_port = htons (0);
if (hostent != NULL)
adresse . sin_addr . s_addr =
((struct in_addr *) (hostent -> h_addr)) -> s_addr;
else erreur(“pas de destinataire”);
while (true) sendto(douille,“Pouet pouet tagada!”,19,0,(struct sockaddr *) & adresse,
sizeof (struct sockaddr_in));
close(douille);
exit(0);
}
[/code]