⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 broadcast.c

📁 使用udp的broadcast方式写的c程序
💻 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 + -