c接口设置linux的ip ,物理地址,在不同的linux系统里,一个可以成功设置,一个却失败了, 请问大家会是什么原因导致的哇,现把设置IP地址的代码复制如下:
/**********************************************************************
Others:
**********************************************************************/
unsigned char SetIpAddress(char *pInterface,unsigned int IpAddress)
{
struct ifreq ifr;
struct sockaddr_in *sinaddr;
int sockfd;
if((pInterface == NULL)||(pInterface[0]!='e')||(pInterface[1]!='t')||(pInterface[2]!='h'))
{
printf("input inteface error!\n");
return FALSE;
}
if(IpAddress == 0)
{
printf("input ip address error\n");
return FALSE;
}
sockfd= socket(AF_INET,SOCK_DGRAM,0);
if (sockfd<0)
{
printf("Can't creat socket \r\n");
}
memset(&ifr, 0, sizeof(ifr));
strncpy(ifr.ifr_name, pInterface, sizeof(ifr.ifr_name)-1);
sinaddr = (struct sockaddr_in *)&ifr.ifr_addr;
sinaddr->sin_family = AF_INET;
sinaddr->sin_addr.s_addr = IpAddress;
if (0 > ioctl(sockfd, SIOCSIFADDR, &ifr))
{
printf("Can't set ip address\r\n");
}
close(sockfd);
return TRUE;
}
这个要看网络连接、防火墙,是否有别的端口占用等
既然有源码看代码的返回值。。来判断错误的原因