UDP broadcast receiver for LAN discovery.
UDP broadcast receiver for LAN discovery.Demonstrates: receiving broadcast messages, bj_udp_wait with timeout. Pair with udp_broadcast_send.c to test.
#define PORT 9999
int main(
int argc,
char* argv[]) {
(void)argc;
(void)argv;
return 1;
}
if (!udp) {
return 1;
}
bj_info(
"discover: listening for broadcasts on port %d",
PORT);
while (1) {
bj_info(
"discover: no broadcasts received in last 5 seconds...");
continue;
}
if (!dgram) {
if (error) {
}
continue;
}
char message[256];
if (len >= sizeof(message)) {
len = sizeof(message) - 1;
}
message[len] = '\0';
bj_info(
"discover: found service at %s:%d - \"%s\"",
}
return 0;
}
int main(int argc, char *argv[])
struct bj_datagram bj_datagram
const char * bj_error_message(const struct bj_error *error)
Gets the error message from an error object.
void bj_clear_error(struct bj_error **error)
Frees an error and sets the pointer to NULL.
#define bj_info(...)
Log a message using the BJ_LOG_INFO level.
#define bj_err(...)
Log a message using the BJ_LOG_ERROR level.
size_t bj_datagram_addr(const struct bj_datagram *dgram, char *buf, size_t size)
Gets the sender's address from a datagram.
void bj_close_datagram(struct bj_datagram *dgram)
Closes a datagram and frees resources.
struct bj_udp * bj_open_udp(const char *host, uint16_t port, uint16_t hints, struct bj_error **error)
Opens a UDP socket bound to the specified port.
uint16_t bj_datagram_port(const struct bj_datagram *dgram)
Gets the sender's port from a datagram.
size_t bj_datagram_len(const struct bj_datagram *dgram)
Gets the data length from a datagram.
#define BJ_ADDR_STRLEN
Maximum length of an address string (including null terminator).
struct bj_datagram * bj_udp_recv(struct bj_udp *udp, struct bj_error **error)
Receives a datagram from the UDP socket.
void bj_close_udp(struct bj_udp *udp)
Closes a UDP socket.
const void * bj_datagram_data(const struct bj_datagram *dgram)
Gets the data pointer from a datagram.
bj_bool bj_udp_wait(struct bj_udp *udp, uint32_t ms_timeout)
Waits for data to become available on a UDP socket.
@ BJ_RESOLVE_IPV4
Restrict address resolution to IPv4.
bj_bool bj_begin(int systems, struct bj_error **error)
Initialises the system.
void bj_end(void)
De-initialises the system.
Logging utility functions.
Portable main() replacement with platform-aware entry shim.
Header file for network API.
String utility functions.
Header file for system interactions.