满意答案
5df4656rre
2013.05.28
采纳率:42% 等级:12
已帮助:16815人
程序如下所示:完全满足你的要求
#include
int WSA_return;
WSADATA WSAData;
HOSTENT *host_entry;
char host_name[256];
char host_address[256];
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
WORD temp=0x0101;
WSA_return=WSAStartup(temp,&WSAData);
if(WSA_return==0)
{
gethostname(host_name,256);
host_entry=gethostbyname(host_name);
if(host_entry!=0)
{
wsprintf(host_address,"%d.%d.%d.%d",
(host_entry->h_addr_list[0][0]&0x00ff),
(host_entry->h_addr_list[0][1]&0x00ff),
(host_entry->h_addr_list[0][2]&0x00ff),
(host_entry->h_addr_list[0][3]&0x00ff));
MessageBox(NULL,host_address,host_name,MB_OK);
}
}
WSACleanup();
return 0;
}
但是需要注意:用Visual C++6.0编译Windows C程序,使用Winsock API函数时,首先要把wsock32.lib添加到它的库模块中,否刚在链接的时候,会出现“error LNK2001”错误。添加wsock32.lib的具体步骤是:打开工程菜单,选择设置,在弹出的Project settings对话框中,点击link选项卡,然后在对象/库模块文本框中添加wsock32.lib。
我用的是win32模式,而不是win32 console application模式,原因是winsock中的函数是以win API为基础的。其中的主函数是WinMain()
00分享举报