Programme multicast en C sous unix

bonjour,
j'ai un petit soucis dans mon code lors de la compilation et je ne comprend pas l'erreur.
c'est un code de diffusion multicast sous unix (j'utilise une version Ubuntu).
voici le code :

#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>

struct in_addr localInterface;
struct sockaddr_in groupSock;
int sd;
int datalen;
char databuf[1024];

int main (int argc, char *argv[])
{
sd = socket(AF_INET, SOCK_DGRAM, 0);
if (sd < 0) {
perror("opening datagram socket");
exit(1);
}

memset((char *) &groupSock, 0, sizeof(groupSock));
groupSock.sin_family = AF_INET;
groupSock.sin_addr.s_addr = inet_addr("225.1.1.1");
groupSock.sin_port = htons(5555);

{
char loopch=0;

if (setsockopt(sd, IPPROTO_IP, IP_MULTICAST_LOOP,
(char *)&loopch, sizeof(loopch)) < 0) {
perror("setting IP_MULTICAST_LOOP:");
close(sd);
exit(1);
}
}
localInterface.s_addr = inet_addr("9.5.1.1");
if (setsockopt(sd, IPPROTO_IP, IP_MULTICAST_IF,
(char *)&localInterface,
sizeof(localInterface)) < 0) {
perror("setting local interface");
exit(1);
}
datalen = 10;
if (sendto(sd, databuf, datalen, 0,
(struct sockaddr*)&groupSock,
sizeof(groupSock)) < 0)
{
perror("sending datagram message");
}

et voici l'erreur après lors de la compilation avec gcc :
Dans la fonction «main» :
23: attention : incompatible implicit declaration of built-in function «memset»

Savez vous pourquoi cette erreur ?
avez vous une solution ?
d'avance, merci

2 réponses

  1. Modérateur
    Salut,

    pour memset il faut utiliser
    #include <string.h> 
    1. merci
      par contre j'ai une autre question :
      je voudrais que l'utilisateur puisse saisir lui même l'adresse multicast avec la fonction scanf par exemple
      dans quel type de variable pourrais-je stocker cette adresse ?