获取ip

byybyybyy 2003-08-21 01:59:21
一:
我用vc6.0做了一个获取本机ip的小程序。对话框上有一个按钮,他的下面是如下的一段代码,对话框上还有一个edit框,为其定义两个变量:1--m_ipdata CString,2--m_ipcon CONTROL.如果得到ip则在edit框上显示,否则显示错误信息,但是在make时错了信息如下.希望高手解决。
二:另外我还想问一下如果用vc控制台程序,是不是不能用CTring
类型,我包含了string.h好像不管用。我是新手,望多多指教。。。


代码如下:

char szHostName[128];
CString str;
if( gethostname(szHostName, 128) == 0 )
{
// Get host adresses
struct hostent * pHost;
int i;

pHost = gethostbyname(szHostName);

for( i = 0; pHost!= NULL && pHost->h_addr_list[i]!= NULL; i++ )
{

int j;

for( j = 0; j < pHost->h_length; j++ )
{
CString addr;

if( j > 0 )
str += ".";

addr.Format("%u", (unsigned int)((unsigned char*)pHost->h_addr_list[i])[j]);
str += addr;
}
// str now contains one local IP address - do whatever you want to do with it (probably add it to a list)
}
m_ipdata = str;
m_ipcon.UpdateData(false);
}
else
{
m_ipdata = "abtain ip is error";
m_ipcon.UpdateData(false);
}



错误信息如下:

--------------------Configuration: getip1 - Win32 Debug--------------------
Linking...
getip1Dlg.obj : error LNK2001: unresolved external symbol __imp__gethostbyname@4
getip1Dlg.obj : error LNK2001: unresolved external symbol __imp__gethostname@8
Debug/getip1.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.

getip1.exe - 3 error(s), 0 warning(s)

...全文
236 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eckal 2004-03-17
  • 打赏
  • 举报
回复
楼上能把完整的代码放上来吗?

多谢了
nicolas2001 2003-08-21
  • 打赏
  • 举报
回复
1。同意nonocast意见,不过我平时都使用WSAStartup()和WSACleanup()这两个函数的,没用过这个
2。控制台肯定可以用CString的,只是你少了个头文件吧?
nicolas2001 2003-08-21
  • 打赏
  • 举报
回复
1。同意nonocast意见,不过我平时都使用WSAStartup()和WSACleanup()这两个函数的,没用过这个
2。控制台可以用CString的,只是你少了个头文件吧?
tzsak 2003-08-21
  • 打赏
  • 举报
回复
肯定是有哪个lib库忘了链上去了
nonocast 2003-08-21
  • 打赏
  • 举报
回复
向导中英选中支持Windows Sockets

应该也就是在StdAfx.h中加入头文件
#include <afxsock.h> // MFC socket extensions

然后再在BOOL CIpApp::InitInstance()中加入Socket的初始化
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
nonocast 2003-08-21
  • 打赏
  • 举报
回复
向导中英选中支持Windows Sockets

应该也就是在StdAfx.h中加入头文件
#include <afxsock.h> // MFC socket extensions

然后再在BOOL CIpApp::InitInstance()中加入Socket的初始化
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
ShiChao 2003-08-21
  • 打赏
  • 举报
回复
连接的时候加上ws2_32.lib
u2m 2003-08-21
  • 打赏
  • 举报
回复
创建程序时没有选择Winsock支持,气候也没有引用相关的头文件
wlbc123456789 2003-08-21
  • 打赏
  • 举报
回复
没读代码

但光看报错就知道定是有什么头文件没有加进来

18,356

社区成员

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

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