I recently updated julia.  Now, on linux,

julia> s = UdpSocket()
UdpSocket(Ptr{Void} 
@0x00000000023808a0,1,Condition({}),Condition({}),Condition({}))

julia> Base.setopt(s, enable_broadcast=1)
ERROR: enable_broadcast: bad file descriptor (EBADF)
 in setopt at socket.jl:419

so something is broken.

Maybe that's why you're doing the ccall, but trying to make broken code 
work seems like an exercise in pain.

Andrew


On Sunday, 23 February 2014 11:35:25 UTC-3, Bob Cowdery wrote:
>
> I'm really struggling to get this working. I have two issues. 
>
> 1. broadcast messages don't arrive.
> 2. recv() hangs until there is some data available because I can't see how 
> to apply a timeout.
>
> I decided to just try to talk to myself as a first step. Could someone 
> else try this please and tell me if I'm doing something wrong or if 
> broadcast is broken.
> Sender side:
> *This works*
> #addr = IPv4(255,255,255,255) 
>
> addr = IPv4(127,0,0,1)
>
> s = UdpSocket()
>
> #ccall(:uv_udp_set_broadcast,Cint,(Ptr{Void},Cint), s, 1)
>
> msg = zeros(Uint8, 63)
>
> msg[1] = 0xef
>
> msg[2] = 0xfe
>
> msg[3] = 0x02
>
> send(s, addr, 1024, msg)
>
>
> *This fails (nothing received)*
> addr = IPv4(255,255,255,255) 
>
> #addr = IPv4(127,0,0,1)
>
> s = UdpSocket()
>
> ccall(:uv_udp_set_broadcast,Cint,(Ptr{Void},Cint), s, 1)
>
> msg = zeros(Uint8, 63)
>
> msg[1] = 0xef
>
> msg[2] = 0xfe
>
> msg[3] = 0x02
>
> send(s, addr, 1024, msg)
>
>
> Receiver side:
> addr = IPv4(127,0,0,1) 
>
> s = UdpSocket()
>
> bind(s, addr, 1024)
>
> println(recv(s))
>
>
>
>
> On Wednesday, February 5, 2014 7:57:34 PM UTC, Bob Cowdery wrote:
>>
>> Does the network i/o package support UDP as it only seems to have TCP 
>> functions.
>>
>> Thanks
>> Bob
>>
>

Reply via email to