如何从VxWorks7上的系统中以RTP(实时过程)获取IP地址? 因为ifAddrGet()不适用于RTP。
答案 0 :(得分:0)
使用ioctl获取IP地址和其他信息:
#include <ioLib.h>
#include <sys/ioctl.h>
#include <socklib.h>
#include <net/if.h>
#include <netinet/in.h>
#include <ipcom_sock.h>
struct sockaddr_in * addrp;
struct ifreq ifr;
int sock;
char ipStr[IP_INET_ADDRSTRLEN]
memset((void *)&ifr, 0, sizeof(struct ifreq));
strcpy(ifr.ifr_name, "gei0");
sock = socket(AF_INET, SOCK_DGRAM, 0);
if(sock == ERROR)
return ERROR;
if(ioctl(sock, SIOCGIFADDR, &ifr) != ERROR)
{
addrp = (struct sockaddr_in *)&ifr.ifr_addr;
ipcom_inet_ntop(AF_INET, &addrp->sin_addr.s_addr, ipStr,
IP_INET_ADDRSTRLEN);
}
else
return ERROR;
printf("IP: %s", ipStr);
close(sock);
return OK