[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lwip-users] UDP broadcast not working - Socket API
From: |
Daniel Berenguer |
Subject: |
[lwip-users] UDP broadcast not working - Socket API |
Date: |
Fri, 19 Jun 2009 13:00:22 +0200 |
Hi all,
I'm trying to use the UDP broadcast example posted here:
http://www.ultimaserial.com/avr_lwip_udp.html
under FreeRTOS+lwIP on my Luminary LM3S8962 platform. This is the code:
main.c:
...
void udpThread(void *pvParameters)
{
int lSocket;
struct sockaddr_in sLocalAddr, sDestAddr;
char reply[]="testing";
char buffer[1024];
int nbytes;
int i;
lSocket = lwip_socket(AF_INET, SOCK_DGRAM, 0);
memset((char *)&sLocalAddr, 0, sizeof(sLocalAddr));
memset((char *)&sDestAddr, 0, sizeof(sDestAddr));
// Destination
sDestAddr.sin_family = AF_INET;
sDestAddr.sin_len = sizeof(sDestAddr);
sDestAddr.sin_addr.s_addr = htonl(INADDR_BROADCAST);
sDestAddr.sin_port = 1234;
// Source
sLocalAddr.sin_family = AF_INET;
sLocalAddr.sin_len = sizeof(sLocalAddr);
sLocalAddr.sin_addr.s_addr = htonl(INADDR_ANY);
sLocalAddr.sin_port = 1235;
lwip_bind(lSocket, (struct sockaddr *)&sLocalAddr, sizeof(sLocalAddr));
while (1)
{
nbytes=lwip_recv(lSocket, buffer, sizeof(buffer),8);
if (nbytes>0)
{
lwip_sendto(lSocket, buffer, nbytes, 0, (struct sockaddr
*)&sDestAddr, sizeof(sDestAddr));
}
lwip_sendto(lSocket, reply, sizeof(reply), 0, (struct sockaddr
*)&sDestAddr, sizeof(sDestAddr));
vTaskDelay(200); //some delay!
}
lwip_close(lSocket);
}
...
int main(int argc, char *argv[])
{
prvSetupHardware();
// Initial text message
RIT128x96x4StringDraw("FreeRTOS adapted for", 5, 0, 15);
RIT128x96x4StringDraw(" Stellaris LM3S8962", 0, 10, 15);
xTaskCreate(ethernetThread,"ethernet", 1000, NULL, 3, NULL);
xTaskCreate(udpThread,"udp", 1000, NULL, 3, NULL);
vTaskStartScheduler();
for(;;)
{
}
}
In order to compile the above code, I changed lwipopts.h as follows:
#define LWIP_SOCKET 1
#define LWIP_COMPAT_SOCKETS 1
#define LWIP_POSIX_SOCKETS_IO_NAMES 1
As result, the program builds correctly, the "udpThread" task is
started but no UDP message is sent on port 1234. This makes me think
that there are some other options to be enabled elsewhere. I decided
to use the BSD socket API just because I'm familiar to it but this is
the first time I work with lwIP. Please feel free to post your
comments and suggestions.
Thanks in advance for your help,
Daniel.
- [lwip-users] UDP broadcast not working - Socket API,
Daniel Berenguer <=