如何用C程序来获取本地机器的IP地址和用户名.

hotline 2004-04-18 06:14:45
请问各位大虾们,要想取得本地的IP地址和用户名用C语言应该怎么实现呢?
那位高手能给我一个能实现这一功能的C源程序代码.
无言以谢!
...全文
189 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
alphahit 2004-04-18
借问一下
有没有一个用SDK编的winsock程序,可以让在下学习学习?
最好能完整点的
  • 打赏
  • 举报
回复
rorot 2004-04-18
刚才用C在VC6 + XP写的,可能在有的环境下运行错误,在程序中我写了错误信息,你可以查看MSDN获得错误原因.
----------------------------------------------------
/************************
API实现
*************************/
#include <stdio.h>
#include <Winsock2.h>

// 需要ws2_32.lib库连接
#pragma comment(lib, "ws2_32.lib" )
#define MAXSIZE 256

int main()
// 获取本地用户名和IP地址
{
// winsock版本1.0以上
const VERSION_MAJOR = 1;
const VERSION_MINOR = 1;
WSADATA WSData;
char hostName[MAXSIZE];
int hostNameLength = MAXSIZE, Error;
HOSTENT *hostInfo;
LPSTR szIPAddress;

// 初始化Win2_32.dll
WSAStartup ( MAKEWORD( VERSION_MAJOR, VERSION_MINOR ), &WSData );


// 获取本地主机名
if ( (Error = gethostname( hostName, hostNameLength )) != 0 )
{
// 出现错误, 获取错误信息
printf( "Get host name error...\nReason: " );
switch (WSAGetLastError())
{
case WSAEFAULT:
printf( "WSAEFAULT\n" );
break;

case WSANOTINITIALISED:
printf( "WSANOTINITIALISED\n" );
break;

case WSAENETDOWN:
printf( "WSAENETDOWN\n" );
break;

case WSAEINPROGRESS:
printf( "WSAEINPROGRESS\n" );
break;
}
return -1;
}

// 输出本地主机名
printf( "Host Name: %s\n", hostName );

// 通过主机名获取主机信息
if ((hostInfo = gethostbyname( hostName )) == NULL)
{
printf( "Unable to find host %s\n", hostName );
return -1;
}
else
{
// 网络地址转换
szIPAddress = inet_ntoa( *(LPIN_ADDR) * (hostInfo->h_addr_list) );
printf( "IP: %s\n", szIPAddress );

}
return 0;
}
  • 打赏
  • 举报
回复
wxh163000 2004-04-18
ding
  • 打赏
  • 举报
回复
rorot 2004-04-18
/**********************
SYSTEM调用
**********************/
#include <stdio.h>
#include <stdlib.h>

int main()
// 获取本地用户名和IP地址
{
system ( "ipconfig/all" );
return 0;
}
  • 打赏
  • 举报
回复
freefalcon 2004-04-18
网上搜吧,很多的
  • 打赏
  • 举报
回复
发帖
C语言

6.7w+

社区成员

C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
帖子事件
创建了帖子
2004-04-18 06:14
社区公告
暂无公告