主题:怎么利用gethostname获取本机的名称,并输出其IP地址
我要飞飞飞
[专家分:180] 发布于 2008-05-02 14:19:00
怎么利用gethostname获取本机的名称,并输出其IP地址
回复列表 (共5个回复)
沙发
我要飞飞飞 [专家分:180] 发布于 2008-05-02 14:24:00
gethostname怎么得到IP地址啊
里面只有一个输出参数char* name,
请教各位高手 要怎么做?
板凳
vfdff [专家分:740] 发布于 2008-05-02 14:44:00
struct hostent FAR * lpHostEnt=gethostbyname(sHostName);
if(lpHostEnt==NULL)
{
//产生错误
sIpAddress=_T("");
return GetLastError();
}
//获取IP
LPSTR lpAddr=lpHostEnt->h_addr_list[0];
3 楼
我要飞飞飞 [专家分:180] 发布于 2008-05-02 15:37:00
#pragma comment(lib,"ws2_32.lib")
#include<STDIO.H>
#include<WINSOCK2.H>
int main()
{
WSAData wsaData;
int ret=WSAStartup(WINSOCK_VERSION,&wsaData);
if(ret!=0){
printf("%d\n",ret);
return -1;
}
else {
printf("High:%xUse:%x\n",wsaData.wHighVersion,wsaData.wVersion);
}
char *name;
int namelen=sizeof(*name);
if(gethostname(name,namelen)!=0){
printf("gethostname 失败");
return -1;
}
else {
HOSTENT *host=gethostbyname(name);
SOCKET sock=socket(AF_INET,SOCK_STREAM,0);
struct in_addr addr;
memset(&addr,0,sizeof(addr));
if(host !=NULL){
for(int i=0;host->h_addr_list[i]!=NULL;i++){
memcpy(&addr.S_un.S_addr,
host->h_addr_list[i],
host->h_length);
}
}
printf("%s: %s\n",host->h_name,inet_ntoa(addr));
}
WSACleanup();
return 0;
}
这是我写的程序,不知道为什么是gethostname失败
4 楼
我要飞飞飞 [专家分:180] 发布于 2008-05-02 15:40:00
#pragma comment(lib,"ws2_32.lib")
#include<STDIO.H>
#include<WINSOCK2.H>
int main()
{
WSAData wsaData;
int ret=WSAStartup(WINSOCK_VERSION,&wsaData);
if(ret!=0){
printf("%d\n",ret);
return -1;
}
else {
printf("High:%xUse:%x\n",wsaData.wHighVersion,wsaData.wVersion);
}
char *name;
int namelen=sizeof(*name);
if(gethostname(name,namelen)!=0){
printf("gethostname 失败");
return -1;
}
else {
HOSTENT *host=gethostbyname(name);
SOCKET sock=socket(AF_INET,SOCK_STREAM,0);
struct in_addr addr;
memset(&addr,0,sizeof(addr));
if(host !=NULL){
for(int i=0;host->h_addr_list[i]!=NULL;i++){
memcpy(&addr.S_un.S_addr,
host->h_addr_list[i],
host->h_length);
}
}
printf("%s: %s\n",host->h_name,inet_ntoa(addr));
}
WSACleanup();
return 0;
}
这是我写的程序,不知道为什么是gethostname失败
5 楼
iuhiao [专家分:1330] 发布于 2008-05-03 12:09:00
char *name;
别的不清楚,不过这个name你没分配内存就在使用,肯定是不行地
呵呵,你发了两个贴!!
我来回复