VC++获取本机IP

voidCGetipDlg::OnButton1(){charszHostName[128]={0};gethostname(szHostName,128);hosten... void CGetipDlg::OnButton1()
{
char szHostName[128] = {0};
gethostname(szHostName, 128);
hostent* phostent = gethostbyname(szHostName);
char* szIP = inet_ntoa(*(in_addr*)&phostent->h_addr_list[2]);
m_showip = szIP;
UpdateData(FALSE);
}
编译没有出错,执行时,单击按钮的时候出现内存读取错误,请问是怎么回事?
展开
 我来答
dongxurr123
2010-04-21 · TA获得超过153个赞
知道小有建树答主
回答量:333
采纳率:0%
帮助的人:283万
展开全部
h_addr_list[2] 会不会是这个的错误?
我说的是linux下哈,windows下的不太了解,应该都差不多吧
普通用户一般都用 h_addr 宏,其实就是h_addr_list[0].
你获取3个ip吗?
如果你的机子只获取一个ip地址,那么就是数组越界了.

解决方法:吧h_addr_list[2]改成 h_addr_list[0] 或者 h_addr试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
深圳市睿讯世纪科技有限公司
2019-11-12 广告
提到ip远程kvm切换器的企业,深圳市睿讯世纪科技有限公司可以了解一下。深圳市睿讯世纪科技有限公司是集研发、生产、销售和售后服务于一体的综合型电子科技企业,精益求精,始终如一地专注于提供数据中心(IDC)管理的应用解决方案。... 点击进入详情页
本回答由深圳市睿讯世纪科技有限公司提供
zhaofeng221
2010-04-10 · TA获得超过496个赞
知道小有建树答主
回答量:98
采纳率:0%
帮助的人:93.3万
展开全部
void CGetipDlg::OnButton1()
{
char szHostName[128] = {0};
gethostname(szHostName, 128);
hostent* phostent = gethostbyname(szHostName);
char* szIP = inet_ntoa(*(in_addr*)&phostent->h_addr_list[2]);
m_EDIT1 = szIP;
UpdateData(FALSE);
}
没有错误啊,其中m_EDIT1是一个edit框对应的变量
运行很好啊
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式