📄 setbroadmsg.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 + -