23,120
社区成员
发帖
与我相关
我的任务
分享
#include "net_config.h" //包括头文件
#include <arpa/inet.h>
void main(void)
{
struct in_addr intaddr;
char net_dev[32];
strcpy(net_dev,gateway_dev(0));
memcpy((char *) &intaddr, (char *)get_ipAddress(net_dev),15);
//printf("IP: %s \n", (char *)get_ipAddress(net_dev));
}
memcpy((char *) &intaddr, (char *)get_ipAddress(net_dev),15);
Segmentation fault
char *get_ipAddress(char *net_dev)
{
int sfd;
struct ifreq ifr;
struct sockaddr_in *sin = (struct sockaddr_in *) &ifr.ifr_addr;
char *str = NULL;
char *noip = "";
char *buf = NULL;
memset(&ifr, 0, sizeof ifr);
if (0 > (sfd = socket(AF_INET, SOCK_STREAM, 0)))
{
perror("getLocalAddress() socket()");
return noip;
}
strcpy(ifr.ifr_name, net_dev);
sin->sin_family = AF_INET;
if (0 == ioctl(sfd, SIOCGIFADDR, &ifr))
{
buf = malloc(16);
bzero(buf, 0);
str = inet_ntoa(sin->sin_addr);
strncpy(buf, str, 15);
return buf;
}
return noip;
}