nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

Re: BROADCAST

Von: Alexandros (niente_spam@chiedetemela.it) [Profil]
Datum: 16.05.2008 10:38
Message-ID: <pKbXj.78657$FR.307003@twister1.libero.it>
Newsgroup: it.comp.os.linux.development
Max M. ha scritto:
> Io ho provato il tuo codice (sulla stessa macchina e su macchine differenti)
> e non ho riscontrato problemi. Posta il codice completo che stai usando, o
> una versione ridotta compilabile che esibisca lo stesso problema.

Grazie per la pazienza :)

Codice listener:

int main (int argc, char *argv[]) {

char buf[BUFLEN];
int n, fd_broad, flag=1;

struct sockaddr_in ascolto;
struct sockaddr_in indirizzo_sender;

socklen_t sender_size=sizeof(indirizzo_sender);

ascolto.sin_family¯_INET;
ascolto.sin_port=htons(4999);
ascolto.sin_addr.s_addr=htonl(INADDR_ANY);

fd_broad=socket(PF_INET, SOCK_DGRAM, 0);
if (fd_broad<0) perror("\n UDP socket error "),
exit(EXIT_FAILURE);

setsockopt(fd_broad, SOL_SOCKET, SO_BROADCAST, &flag, sizeof(int));

if ( bind(fd_broad, (struct sockaddr *) &ascolto, sizeof(ascolto)) < 0) {
perror("\n bind error ");
exit(EXIT_FAILURE);
}

n=recvfrom(fd_broad, buf, BUFLEN, 0, (struct sockaddr *)
&indirizzo_sender, &sender_size);

printf("\n task #%d - ricevuto %s da %s \n", getpid(), buf,
inet_ntoa(indirizzo_sender.sin_addr) );


return 0;

}/*END main*/

---

Codice sender:

int main (int argc, char *argv[]) {

int fd_udp, n, flag=1;
char buf[BUFLEN];

struct sockaddr_in broadcast;

broadcast.sin_family¯_INET;
broadcast.sin_port=htons(4999);
broadcast.sin_addr.s_addr=htonl(INADDR_BROADCAST);

fd_udp=socket(PF_INET, SOCK_DGRAM, 0);
if (fd_udp<0) perror("\n UDP socket error "), exit(EXIT_FAILURE);

setsockopt(fd_udp, SOL_SOCKET, SO_BROADCAST, &flag, sizeof(flag) );

strcpy(buf, "ALIVE");

n=sendto(fd_udp, buf, strlen(buf), 0, (struct sockaddr *) &broadcast,
sizeof(broadcast));
if (n<0) perror("\n errore sendto "), exit(EXIT_FAILURE);

return 0;

}/*END main*/

---

Quale può essere il problema ? ... :(

[ Auf dieses Posting antworten ]