sockets - Send UDP broadcast with use of glib -
i trying write simple application sends , receives broadcasts. testing purposes. doesn't work. receive command seems work, sending fails. help? important have use glib sockets.
my code receiving:
gerror *err = nullptr; ginetaddress *iaddr = g_inet_address_new_any(g_socket_family_ipv4); gsocketaddress *addr = g_inet_socket_address_new(iaddr, 7070); gsocket *sock = g_socket_new(g_socket_family_ipv4, g_socket_type_datagram, g_socket_protocol_udp, &err); if (err) werror("err1"); g_socket_set_broadcast(sock, true); g_socket_bind(sock, addr, true, &err); if (err) werror("err2"); char buf[200] = {0}; wdebug("listening!"); g_socket_receive(sock, buf, 200, nullptr, &err); if (err) werror("err3"); else wdebug("buf = %s", buf); application starts wait incoming packets. here's code sending broadcast:
gerror *err = nullptr; ginetaddress *iaddr = g_inet_address_new_any(g_socket_family_ipv4); gsocketaddress *addr = g_inet_socket_address_new(iaddr, 7070); gsocket *sock = g_socket_new(g_socket_family_ipv4, g_socket_type_datagram, g_socket_protocol_udp, &err); if (err) werror("err1"); g_socket_set_broadcast(sock, true); g_socket_send_to(sock, addr, "test", 5, nullptr, &err); if (err) werror("err2"); wdebug("sent!"); i've been looking examples on sending broadcasts glib, failed find them. can help?
you shall create specific broadcast address.
instead of
ginetaddress *iaddr = g_inet_address_new_any(g_socket_family_ipv4); use example
ginetaddress *iaddr = g_inet_address_new_from_string("127.255.255.255"); this send broadcast loopback interface.
more details broadcast address calculation see http://jodies.de/ipcalc.
Comments
Post a Comment