UDP broadcast over a specific interface

Larry.Martell at gmail.com Larry.Martell at gmail.com
Thu Jul 19 16:23:35 EDT 2007


On Jul 19, 7:09 am, Jean-Paul Calderone <exar... at divmod.com> wrote:
> On Thu, 19 Jul 2007 12:32:02 -0000, "Larry.Mart... at gmail.com" <larry.mart... at gmail.com> wrote:
> >I am trying to send UDP broadcast packets over a specific interface
> >and I
> >am having trouble specifying the interface:
>
> >host='192.168.28.255'
> >sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
> >sock.bind(('',0))
> >sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
> >sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_IF,
> >socket.inet_aton(host))
>
> >socket.error: (49, "Can't assign requested address")
>
> >What am I doing wrong? How can I force my broadcast packets to go out
> >a specific interface?
>
> IP_MULTICAST_IF is for multicast UDP, which doesn't have anything to do
> with broadcast UDP.
>
> Try just doing this, instead:
>
>     host='192.168.28.255'
>     sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
>     sock.bind((host,0))
>     sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
>
> You shouldn't need to mess with anything beyond that.

Thanks! This works perfectly.

-larry




More information about the Python-list mailing list