#include #include #include #include #include #define PORT 8004 #define SERVER_IP "255.255.255.255" #define BUFFER_SIZE 1024 int main() { int sockfd; struct sockaddr_in server_addr; char buffer[BUFFER_SIZE]; // 创建 UDP 套接字 sockfd = socket(AF_INET, SOCK_DGRAM, 0); if (sockfd < 0) { perror("socket creation failed"); exit(EXIT_FAILURE); } // 设置套接字为广播模式 int broadcast = 1; if (setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &broadcast, sizeof(broadcast)) < 0) { perror("setsockopt failed"); close(sockfd); exit(EXIT_FAILURE); } // 初始化服务器地址 memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(PORT); server_addr.sin_addr.s_addr = inet_addr(SERVER_IP); // 发送数据 const char *message = "Hello from client!"; if (sendto(sockfd, message, strlen(message), 0, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) { perror("sendto failed"); close(sockfd); exit(EXIT_FAILURE); } printf("Message sent to %s:%d\n", SERVER_IP, PORT); // 接收响应 ssize_t bytes_received = recvfrom(sockfd, buffer, BUFFER_SIZE, 0, NULL, NULL); if (bytes_received < 0) { perror("recvfrom failed"); } else { printf("Received %ld bytes from server\n", bytes_received); buffer[bytes_received] = '\0'; printf("Received response: %s\n", buffer); } close(sockfd); return 0; } // #include // #include // #include // #include // #include // #include // #include // #include // int main() { // int sock = -1; // if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { // perror("socket error"); // return -1; // } // const int opt = 1; // int nb = 0; // nb = setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *)&opt, sizeof(opt)); // if (nb == -1) { // perror("set socket error..."); // return -1; // } // struct sockaddr_in addrto; // memset(&addrto, 0, sizeof(struct sockaddr_in)); // addrto.sin_family = AF_INET; // addrto.sin_addr.s_addr = htonl(INADDR_BROADCAST); // addrto.sin_port = htons(8004); // int nlen = sizeof(addrto); // while (1) { // sleep(1); // char smsg[] = "abcdef"; // int ret = sendto(sock, smsg, strlen(smsg), 0, (struct sockaddr *)&addrto, nlen); // if (ret < 0) { // perror("send error...."); // } else { // printf("ok "); // } // } // return 0; // } /* * main.c * * Created on: Sep 26, 2022 * Author: root */ // #include // #include // #include // #include // #include // #include // #define BOARDCAST_IP "255.255.255.255" // #define BOARDCAST_PORT 10130 // int broadcast_send(void) // { // int fd; // int ret; // int on; // struct sockaddr_in addr; // const char* message = "This is boardcast message !"; // fd = socket(AF_INET, SOCK_DGRAM, 0); // if(fd < 0) // { // fprintf(stderr, " create socket failed ! \n"); // goto __exit; // } // on = 1; // ret = setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on)); // if(ret < 0) // { // fprintf(stderr, " setsockopt failed ! \n"); // goto __exit; // } // memset(&addr, 0, sizeof(addr)); // addr.sin_family = AF_INET; // addr.sin_port = htons(BOARDCAST_PORT); // addr.sin_addr.s_addr = inet_addr(BOARDCAST_IP); // ret = sendto(fd, message, strlen(message), 0, (struct sockaddr *)&addr, sizeof(addr)); // if(fd < 0) // { // fprintf(stderr, " boardcast failed ! \n"); // goto __exit; // } // printf(" send ok ! \n"); // __exit: // close(fd); // return 0; // } // int broadcast_recv(void) // { // int fd; // int ret; // int on; // struct sockaddr_in addr, addr_from; // char message[512]; // socklen_t len; // fd = socket(AF_INET, SOCK_DGRAM, 0); // if(fd < 0) // { // fprintf(stderr, " create socket failed ! \n"); // goto __exit; // } // on = 1; // ret = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)); // if(ret < 0) // { // fprintf(stderr, " setsockopt failed ! \n"); // goto __exit; // } // memset(&addr, 0, sizeof(addr)); // addr.sin_family = AF_INET; // addr.sin_port = htons(BOARDCAST_PORT); // addr.sin_addr.s_addr = htonl(INADDR_ANY); // ret = bind(fd, (struct sockaddr *)&addr, sizeof(addr)); // if(ret < 0) // { // fprintf(stderr, " bind failed ! \n"); // goto __exit; // } // memset(message, 0X00, sizeof(message)); // len = sizeof(addr_from); // ret = recvfrom(fd, message, sizeof(message), 0, (struct sockaddr *)&addr_from, &len); // if(ret < 0) // { // fprintf(stderr, " recv failed ! \n"); // goto __exit; // } // printf(" recv: [%s] ok ! \n", message); // __exit: // close(fd); // return 0; // } // int main(int argc, const char* argv[]) // { // if(argc == 2) // { // if(strcmp(argv[1], "recv") == 0) // { // broadcast_recv(); // } // if(strcmp(argv[1], "send") == 0) // { // broadcast_send(); // } // }else // { // printf("\r\n"); // printf("########################################### \r\n"); // printf("Usage: %s [ recv | send ] \r\n", argv[0]); // printf("e.g. : %s recv\r\n", argv[0]); // printf("e.g. : %s send\r\n", argv[0]); // printf("########################################### \r\n"); // } // return 0; // }