Welcome to the most active Linux Forum on the web.
Go Back > Forums > Linux Forums > Linux - Hardware > Linux - Embedded & Single-board computer
User Name
Linux - Embedded & Single-board computer This forum is for the discussion of Linux on both embedded devices and single-board computers (such as the Raspberry Pi, BeagleBoard and PandaBoard). Discussions involving Arduino, plug computers and other micro-controller like devices are also welcome.


Search this Thread
Old 03-02-2010, 09:46 AM   #1
LQ Newbie
Registered: Apr 2004
Location: turkey
Posts: 8

Rep: Reputation: 0
UDP Broadcasting problem

I have an embedded device working on Linux. I try to write a simple code that broadcasts UDP messages. I use this sample code:

** broadcaster.c -- a datagram "client" like talker.c, except
**                  this one can broadcast

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

#define SERVERPORT 4950    // the port users will be connecting to

int main(int argc, char *argv[])
    int sockfd;
    struct sockaddr_in their_addr; // connector's address information
    struct hostent *he;
    int numbytes;
    int broadcast = 1;
    //char broadcast = '1'; // if that doesn't work, try this

    if (argc != 3) {
        fprintf(stderr,"usage: broadcaster hostname message\n");

    if ((he=gethostbyname(argv[1])) == NULL) {  // get the host info

    if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {

    // this call is what allows broadcast packets to be sent:
    if (setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &broadcast,
        sizeof broadcast) == -1) {
        perror("setsockopt (SO_BROADCAST)");

    their_addr.sin_family = AF_INET;     // host byte order
    their_addr.sin_port = htons(SERVERPORT); // short, network byte order
    their_addr.sin_addr = *((struct in_addr *)he->h_addr);
    memset(their_addr.sin_zero, '\0', sizeof their_addr.sin_zero);

    if ((numbytes=sendto(sockfd, argv[2], strlen(argv[2]), 0,
             (struct sockaddr *)&their_addr, sizeof their_addr)) == -1) {

    printf("sent %d bytes to %s\n", numbytes,


    return 0;

When I deploy the program and run it on the device, I get this error message:

# ./broadcaster testmsg
/bin/sh: ./broadcaster: Permission denied
But when I run the program on my PC, I don't get any errors.

Altough SO_BROADCAST option is set on the socket, why does it give that error? And what can be the difference between the device and my desktop PC?

Old 03-02-2010, 01:02 PM   #2
Registered: Mar 2008
Distribution: Gentoo, CentOS, Fedora, Arch
Posts: 231
Blog Entries: 1

Rep: Reputation: 42
chmod +x broadcaster?
Old 03-03-2010, 01:48 AM   #3
LQ Newbie
Registered: Apr 2004
Location: turkey
Posts: 8

Original Poster
Rep: Reputation: 0
Originally Posted by Maligree View Post
chmod +x broadcaster?
Yes, chmod solved that. I've lost while trying to solve it, so I couldn't realize that.
Thanks again.


broadcast, udp

Thread Tools Search this Thread
Search this Thread:

Advanced Search

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 Off
HTML code is Off

Similar Threads
Thread Thread Starter Forum Replies Last Post
nmbd broadcasting UDP to mikesjays Linux - Server 2 06-30-2009 09:42 PM
UDP: Short Packets: and UDP bad checksum: entries in dmesg minutes2memories Linux - Networking 2 02-26-2006 07:28 PM
How to receive UDP and ICMP packets, by one UDP socket(PMTUD) myself_rajat Linux - Networking 0 05-28-2004 05:43 AM
Broadcasting question/problem johnrule Linux - Networking 4 01-26-2004 08:39 AM
Problem with broadcasting udayashankark Programming 1 12-23-2002 12:06 PM

All times are GMT -5. The time now is 03:56 AM.

Main Menu
Write for LQ is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration