📄 broadcast.c
字号:
#include <string.h> #include <sys/types.h> #include <stdio.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netdb.h>#include <unistd.h>#include <stdlib.h> #include <sys/ioctl.h> #include <net/if.h> #include <net/if_arp.h> #include <net/ethernet.h> #include <signal.h> #include <netinet/ip.h> #include "broadcast.h"int main(void){ int socket_descriptor, countsend,i=0; struct sockaddr_in address; broadcasttype *broadmsg; nettype *getmsg; int forkfd; forkfd=fork(); if (forkfd>0) { broadmsg = (broadcasttype *)malloc(sizeof(broadcasttype)) ; bzero(broadmsg, sizeof(broadcasttype)); socket_descriptor = socket(AF_INET, SOCK_DGRAM, 0); if (socket_descriptor == -1) { perror("Opening socket"); exit(EXIT_FAILURE); } memset(&address, 0, sizeof(address)); address.sin_port = htons(BROADCAST_PORT); address.sin_family = AF_INET; address.sin_addr.s_addr = inet_addr(HOST_NAME); /*get broadcast message*/ broadmsg = setbroadmsg(); while(1) { countsend = sendto(socket_descriptor, broadmsg, sizeof(broadcasttype), 0,\ (struct sockaddr *)&address, sizeof(address)); if(countsend < 0) { perror("sendto"); exit(EXIT_FAILURE); } //printf("Msg=%s\n", broadmsg->message); //printf("IPadr=%s\n", broadmsg->ipaddress); sleep(2); } free(broadmsg); exit(EXIT_SUCCESS); }/*end of fork()*/ /*child process, receive backloop data*/ else { getmsg = (nettype *)malloc(sizeof(nettype)); bzero(getmsg, sizeof(nettype)); for(i=1;i<101;i++) { getmsg = upd_receive_ip(); printf("receive: %d\n",i); printf("MAC:%02x:%02x:%02x:%02x:%02x:%02x\n",\ getmsg->mac_value[0],getmsg->mac_value[1],\ getmsg->mac_value[2],getmsg->mac_value[3],\ getmsg->mac_value[4],getmsg->mac_value[5]); printf("NETMASK:%s\n",getmsg->netmask_value); printf("IP:%s\n",getmsg->ip_value); printf("NAME: %s\n", getmsg->message); } free(getmsg); exit(0); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -