#include #include #include #include #include #include #include main(int argc, char* argv[]) { int sock, i, l, on; struct sockaddr_in addr, from; char buf[1024]; sock = socket(AF_INET, SOCK_DGRAM, 0); if (sock < 0) { perror("err creating socket:"); exit(1); } on = 1; if (setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &on, sizeof on) == -1) { perror("could not set SO_BROADCAST option:"); } if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof on) == -1) { perror("could not set SO_REUSEADDR option:"); } memset(&addr, 0, sizeof(struct sockaddr_in)); addr.sin_family = AF_INET; addr.sin_port = htons(2345); addr.sin_addr.s_addr = htonl(INADDR_ANY); l = sizeof(struct sockaddr_in); if (bind(sock, (struct sockaddr *) &addr, sizeof(struct sockaddr_in)) == -1) { perror("error binding:"); } i = recvfrom (sock, buf, sizeof(buf), 0, &from, &l); if (i < 0) perror("erroare la recv:"); else { printf("am primit broadcast %d octeti [%s] !\n", i, buf); buf[i] = 0; } }