The UNIX and Linux Forums  
Hello and Welcome from United States to the UNIX and Linux Forums! Thank You for Visiting and Joining Our Global Community.

Go Back   The UNIX and Linux Forums > Top Forums > UNIX for Advanced & Expert Users
.
google unix.com



UNIX for Advanced & Expert Users Expert-to-Expert. Learn advanced UNIX, UNIX commands, Linux, Operating Systems, System Administration, Programming, Shell, Shell Scripts, Solaris, Linux, HP-UX, AIX, OS X, BSD.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
network and broadcast address scofiled83 Shell Programming and Scripting 4 11-09-2008 08:55 AM
broadcast SEB UNIX Desktop for Dummies Questions & Answers 1 07-08-2003 10:40 AM
Broadcast IP Address PBNOSGT IP Networking 4 03-11-2002 09:43 PM
broadcast email??? solvman UNIX for Dummies Questions & Answers 1 10-08-2001 11:20 AM
broadcast address 98_1LE IP Networking 1 02-06-2001 02:54 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Powered by Powered by Google
 
LinkBack Thread Tools Search this Thread Rate Thread Display Modes
  #1 (permalink)  
Old 12-10-2008
konvalo konvalo is offline
Registered User
  
 

Join Date: Jan 2002
Posts: 20
Question Why UDP broadcast don't run?

I use FreeBSD7.0, I want to use UDP broadcast,my code is following:
/*udpcli01.c*/
int
main(int argc, char **argv)
{
int sockfd;
struct sockaddr_in servaddr;
if (argc != 2)
err_quit("usage: udpcli <IPaddress>");
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(13);
inet_pton(AF_INET, argv[1], &servaddr.sin_addr);
sockfd = Socket(AF_INET, SOCK_DGRAM, 0);
dg_cli(stdin, sockfd, (SA *) &servaddr, sizeof(servaddr));
exit(0);
}

/*dg_cli.c*/
void
dg_cli(FILE *fp, int sockfd, const SA *pservaddr, socklen_t servlen)
{
int n;
char sendline[MAXLINE], recvline[MAXLINE + 1];
while (fgets(sendline, MAXLINE, fp) != NULL) {
sendto(sockfd, sendline, strlen(sendline), 0, pservaddr, servlen);
n = Recvfrom(sockfd, recvline, MAXLINE, 0, NULL, NULL);
recvline[n] = 0; /* null terminate */
fputs(recvline, stdout);
}
}

When I run above code,10.1.2.255 is broadcast address,and input a line,like following:
$./udpcli01 10.1.2.255
Hi

It should receive many machine response,but I don't receive any message!
If I ping 10.1.2.255,I can receive many machine response message,why my code can't receive message? How can I modify above code to receive message?

Thanks in advance!
  #2 (permalink)  
Old 12-10-2008
fpmurphy's Avatar
fpmurphy fpmurphy is offline Forum Staff  
Moderator
  
 

Join Date: Dec 2003
Location: Florida
Posts: 1,912
Stay away from directed broadcasts, they are dangerous. Use 255.255.255.255 instead.

Note originally 255.255.255.255 was intended to be used to broadcast to every node on the Internet. It was quickly found to be a bad idea and was changed to mean "limited broadcast" to be sent on the local link only. See RFC 1122.
  #3 (permalink)  
Old 12-14-2008
odys odys is offline
Registered User
  
 

Join Date: Feb 2005
Posts: 59
Hi, you need to set SO_BROADCAST option for the socket with 'setsockopt' function.
And you need suitable server to respond...
Sponsored Links
Closed Thread

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT -4. The time now is 07:39 PM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
The UNIX and Linux Forums Content Copyright ©1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant URLs by vBSEO 3.2.0