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

📄 setbroadmsg.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 <netinet/ip.h> #include "msgstruct.h"broadcasttype *setbroadmsg() { 	#if 0	struct  in_addr myip, mymask; 	int     fd_arp;              /* socket fd for receive packets */ 	struct  ifreq   ifr;            /* ifr structure  in if.h header */ 			char	device[32];  /* ethernet device name */ 	int	fromlen; 	struct sockaddr_in	*sin_ptr; 	u_char	*ptr; 	int  n, i=0; 	broadcasttype *broadmsg;	static broadcasttype init;	broadmsg = (broadcasttype *)&init;	bzero(broadmsg,sizeof(broadcasttype));		strcpy(device, "eth0");  	if ((fd_arp = socket(AF_INET, SOCK_PACKET, 0/*htons(0x0806)*/)) < 0) { 		perror( "arp socket error"); 		return NULL;	}  	strcpy(ifr.ifr_name, device); 	/*ifr.ifr_addr.sa_family = AF_INET;*/ 	/* get ip address of my interface */ 	if (ioctl(fd_arp, SIOCGIFADDR, &ifr) < 0) { 		perror("ioctl SIOCGIFADDR error"); 		return NULL; 	} 	sin_ptr = (struct sockaddr_in *)&ifr.ifr_addr; 	myip  = sin_ptr->sin_addr;  	sprintf( broadmsg->ipaddress, "%s", inet_ntoa(myip)); 	 	/*Device type*/	strcpy(broadmsg->message,"IP Camera");	close(fd_arp);		return broadmsg;	#else    signed int nSockFd;    struct ifreq sIfr;    struct sockaddr_in *pSockAddr;    signed   char* pTmp="0.0.0.0";    signed   char cRet=0;	unsigned char * pIfName = "eth0";	static broadcasttype init;    nSockFd = socket ( AF_INET, SOCK_DGRAM, 0 );    if ( nSockFd == -1 ){        printf ( "get_ip_addr: creat socket error\n" );    }    strcpy ( sIfr.ifr_name, pIfName);    sIfr.ifr_addr.sa_family=AF_INET;    if ( ioctl ( nSockFd, SIOCGIFADDR, &sIfr ) < 0 )    {        printf( "get_ip_addr: ioctl \n" );        cRet=-2;    }    else{        pSockAddr= ( struct sockaddr_in * ) &sIfr.ifr_addr;        pTmp = inet_ntoa ( pSockAddr->sin_addr );    }    memcpy(init.ipaddress,pTmp,sizeof(init));	memcpy(init.message,"IP Camera",strlen("IP Camera"));    close(nSockFd);	    return (&init);  	#endif}  /* end of main */ 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -