在用这个函数时,得到的网络设备描述符是这样子的

怎样才能得到设备管理中的名字显示的名字??
其次,我通过 d->addresses->addr转换的ip地址均为0,0,0,0,不知道为啥?
下面是代码
void MainWindow::on_actionSelcet_Eth_triggered()
{
SelectDialog *showEth=new SelectDialog();
pcap_if_t *all,*d;
char errbuf[64];
char *str;
int i=0,j=0;
if(pcap_findalldevs(&all,errbuf)==-1)
{
QMessageBox::information(NULL, "Eorror", errbuf, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
exit(-1);
}
for(d=all;d;d=d->next)
{
showEth->SetTableWidgetData1(j,i,d->name);
i++;
if (d->description)
{
showEth->SetTableWidgetData1(j,i,d->description);
i++;
}
else
QMessageBox::information(NULL, "Eorror", "No description available", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
// str=returnipstring(d->addresses->addr);
j++;
i=i-2;
}
pcap_freealldevs(all);
showEth->show();
}
char * MainWindow::returnipstring(const sockaddr *addr)
{
char *str;
str=inet_ntoa((*(sockaddr_in*)addr).sin_addr);
qDebug()<<str;
//qDebug()<<addr->sin_port;
return str;
------解决思路----------------------
QHostAddress(addr).toString()
------解决思路----------------------
QHostAddress Widget::getInterface()
{
QList<QNetworkAddressEntry> list;
QHostAddress addr;
QNetworkInterface interface = QNetworkInterface::interfaceFromName("eth0");
list = interface.addressEntries();
if(!list.isEmpty())
addr = list.at(0).ip();
}