this code demonstrate how to receive broadcast packet with mbed-os (Mbed OS 5). (tested on LPC1768)
mbed os : https://github.com/ARMmbed/mbed-os
main.cpp
- Committer:
- yukilab
- Date:
- 2018-02-01
- Revision:
- 0:e361f65583a0
File content as of revision 0:e361f65583a0:
#include "mbed.h" #include "EthernetInterface.h" #define MY_PORT 58083 #define T_1_SECOND 1 Serial pc(USBTX, USBRX); // default to 9600 8N1 #define log(...) { pc.printf(__VA_ARGS__); } EthernetInterface interface; UDPSocket socket; SocketAddress addr; int main(void) { nsapi_error_t st; const char *addr_char; char buffer[256]; interface.connect(); // link up and wait DHCP address addr_char = interface.get_ip_address(); log("My IP Address: %s\n", addr_char); if (!addr.set_ip_address(addr_char)){ log("ERROR: failed to set IP address %s\n", addr_char); }else{ addr.set_port(MY_PORT); } if ((st = socket.open(&interface)) != NSAPI_ERROR_OK) { printf("Failed to open UDP Socket (status %d)\n", st); } if ((st = socket.bind((const SocketAddress)addr)) != NSAPI_ERROR_OK) { printf("Failed to bind UDP Socket to port %d (status %d)\n", MY_PORT, st); } while(1) { nsapi_size_or_error_t st = socket.recvfrom(&addr, (void *)buffer, (unsigned int)sizeof(buffer)); if (st > 0) { buffer[st] = 0; log("received: %s\n", buffer); // assuming text received }else{ log("ERROR: socket.recvfrom : %d\n", st); } wait(T_1_SECOND); } }