真要改的话会比较麻烦,倒不如直接用标准库的函数……
for_each(++begin(),end(),std::bind(std::mem_fn(&slist<T>::out),*this)头文件是<functional>
另一种方式是用lambda,写成
for_each(++begin(),end(),[&]{out()}两种方法都需要编译器支持c++11
MFC:
---------------在StdAfx.h中加入---------------------#include <winsock2.h> //套接字编程需要的头文件
#pragma comment(lib,"ws2_32.lib") //套接字编程需要的库文件
---------------在要用的地方---------------------
WSADATA wsadata
if(0 != WSAStartup(MAKEWORD(2, 2), &wsadata)) //初始化
{
AfxMessageBox("初始化网络环境失败!")
return TRUE
}
char szHostName[MAX_PATH + 1]
gethostname(szHostName, MAX_PATH) //得到计算机名
hostent *p = gethostbyname(szHostName) //从计算机名得到主机信息
if(p == NULL)
{
AfxMessageBox("得到本机网络信息失败!")
return TRUE
}
m_strName = szHostName //保存主机名
int nCount = 0 //保存主机地址
char *pIP = inet_ntoa(*(in_addr *)p->h_addr_list[0])//将32位IP转化为字符串IP
m_strAddr = pIP //保存主机IP地址
UpdateData(FALSE) //显示各个数据
WSACleanup() //释放Winsock API
QT:
QString Widget::getIP() //获取ip地址{
QList<QHostAddress> list = QNetworkInterface::allAddresses()
foreach (QHostAddress address, list)
{
if(address.protocol() == QAbstractSocket::IPv4Protocol)
//我们使用IPv4地址
return address.toString()
}
return 0
}
或者
QString localHostName = QHostInfo::localHostName()
qDebug() <<"localHostName:"<<localHostName
QHostInfo info = QHostInfo::fromName(localHostName)
foreach(QHostAddress address,info.addresses())
{
if(address.protocol() == QAbstractSocket::IPv4Protocol)
qDebug() <<"IPV4 Address: "<< address.toString()
}
另外,如果是windows系统:
可以参考:http://blog.csdn.net/q277055799/article/details/8301581
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)