📄 comm.c
字号:
#include<stdio.h>
#include<time.h>
#include<sys/ioctl.h>
#include<net/if.h>
#include<netinet/in.h>
#include <netinet/if_ether.h>
char *str_cat(char *str1, char *str2)
{
int len;
len = strlen(str1)+strlen(str2)+1;
char *buff = (char *)malloc(len);
memset(buff, 0, len);
strcpy(buff, str1);
strcat(buff, str2);
return buff;
}
int str_to_i(char *ch)
{
int i,k;
i=0;
for(k=strlen(ch);k>0;k--){
i=i*10+*(ch++)-48;
}
return i;
}
int str_cmp(char * ch1,char * ch2)
{
char * t1,* t2;
char c1,c2;
t1 = ch1;
t2 = ch2;
while(isprint(*t1)&&isprint(*t2)){
c1 = *t1++;
c2 = *t2++;
if(c1 > c2) return 1;
if(c1 < c2) return -1;
}
while(isspace(*t1)) t1++;
while(isspace(*t2)) t2++;
if(isprint(*t1)) return 1;
if(isprint(*t2)) return -1;
return 0;
}
int get_self_time(time_t *the_time)
{
time(the_time);
return 0;
}
int get_selfip_addr(char *myaddr)
{
char buf[4096];
struct ifconf ifc;
struct ifreq *ifr;
int i,cnt;
ifc.ifc_len = 4096;
ifc.ifc_buf = buf;
i = socket(AF_INET,SOCK_DGRAM,0);
ioctl(i,SIOCGIFCONF,&ifc);
close(i);
ifr = ifc.ifc_req;
cnt = ifc.ifc_len/sizeof(*ifr);
for(i = 0;i < cnt;i++)
{
struct sockaddr_in *addr = (struct sockaddr_in *)&ifr[i].ifr_addr;
if(strcmp(ifr[i].ifr_name,"eth0")==0)
{
sprintf(myaddr,"%s",inet_ntoa(addr->sin_addr));
}
}
return 0;
}
int mac_self(unsigned char addr[])
{
char* device="eth0";
unsigned char macaddr[ETH_ALEN];
unsigned char ut1[100],ut2[100];
int s=socket(AF_INET,SOCK_DGRAM,0);
struct ifreq req;
int err;
strcpy(req.ifr_name,device);
err=ioctl(s,SIOCGIFHWADDR,&req);
close(s);
int i=0;
if(err!=-1)
{
memcpy(macaddr,req.ifr_hwaddr.sa_data,ETH_ALEN);
for(i=0;i<ETH_ALEN;i++)
{
sprintf(ut1,"%2x:",macaddr[i]);
sprintf(ut2,"%s%s",addr,ut1);
sprintf(addr,"%s",ut2);
}
addr[strlen(addr)-1]='\0';
}
else
{
printf("error\n");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -