怎样将存储在struct sockaddr中的ip地址转换成如"59.64.183.130"

yanzhi198635 2006-11-06 03:35:22
怎样将存储在struct sockaddr中的ip地址转换成如"59.64.183.130",另外想问一下winpcap中的pcap lookupnet()函数好用吗?我能用它查出掩码,但ip地址好象不对.
...全文
378 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanzhi198635 2006-11-06
  • 打赏
  • 举报
回复
好象不行哦.我想获得网卡的ip地址.程序如下:
#include <pcap.h>
pcap_if_t *FindNIC(char NICsettingname[2])
{
pcap_if_t *alldevs;
pcap_if_t *d;
FILE *fp;
int j,i=0,num;
char filename[10],logicalname[10],compare[10];
char error_content[PCAP_ERRBUF_SIZE];
char *name;
struct NICname /*网卡在文件中的存贮结构*/
{char real[10];
char setting[10];
}NIC[4];
//for(j=0;j<4;j++) /*在文件中初始化四个网卡*/
/* { printf("%d:",j+1);
scanf("%s%s",NIC[j].real,NIC[j].setting);
}
printf("please input the filename:");
scanf("%s",filename);
fp=fopen(filename,"w");
for(j=0;j<4;j++)
fwrite(&NIC[j],sizeof(struct NICname),1,fp);
fclose(fp);*/
if (pcap_findalldevs(&alldevs, error_content) == -1) /*获取网卡列表*/
{
printf("Error in pcap_findalldevs");
exit(1);
}
for(d=alldevs; d; d=d->next) /*找到所选网卡在网卡列表中的序号并返回该值*/
{
logicalname[0]=*(d->description);
logicalname[1]=*(d->description+1);
logicalname[2]=*(d->description+2);
fp=fopen("yanzhi","r");
for(j=0;j<4;j++)
{fread(&NIC[j],sizeof(struct NICname),1,fp);
if(NIC[j].real[0]==logicalname[0]&&NIC[j].real[1]==logicalname[1]&&NIC[j].real[2]==logicalname[2])
{name=NIC[j].setting;
compare[i]=NIC[j].setting[1];
}
}
i++;
fclose(fp);
}
for(i=0;i<4;i++)
if(compare[i]==NICsettingname[1])
num=i+1;
for(d=alldevs, i=0; i<num-1 ;d=d->next, i++);
return d;
pcap_freealldevs(alldevs);
}
void main()

{ pcap_if_t *d;
pcap_addr_t *a;
char *net_ip_string;
d=FindNIC("TA");
a=d->addresses;
net_ip_string=inet_ntoa(a->addr);?不知道怎么转换
printf("%s\n",net_ip_string);
}

star119119 2006-11-06
  • 打赏
  • 举报
回复
struct sockaddr addr;

inet_ntoa(addr.sin_addr.s_addr);

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧