Hi,
I am using the TMS320C6455 EVM for my application development on NDK.
I am able to transmit the unicast packets but when i try to transmit a broadcast packet, the send() function returns with a error value 13.
Error value 13 indicates EACCES which is permission denied error. I am transmitting UDP packets.
Please help me on this.
Regards,
Jesuraj
I had the same problem as you, and I believe I have the answer. The NDK doesn't send UDP broadcast packets as the default. I couldn't find this nugget of information in the NDK docs. However, searching through the Internet I came across a forum that said some TCP/IP stacks don't transmit UDP broadcast packets as the default. Something about overwhelming the network.
After creating my UDP socket, I added the following call: setsockopt() with the SO_BROADCAST flag. This fixed my problem, and it should fix yours as well. I've added the code below. The val=1 statement and passing that into setsockopt() appears to do nothing. It's just there to satisfy the calling requirements for the API.
UDPSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
val = 1;
setsockopt(UDPSocket, SOL_SOCKET, SO_BROADCAST, &val, sizeof(val));
It would be nice to have a TI expert weight in on this, or someone who is a Network socket programmer(which I'm not). But for now, I'm going with this solution.
- Dean
Thanks for your explanation.
I changed as you explained and it worked.