`
shaojiashuai123456
  • 浏览: 262790 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

getHostByName 获取主机信息

阅读更多

unsigned int dir(char * server) {
int sck;//套接字变量
struct sockaddr_in serv_adr; //远程主机的地址
struct hostent *host;        //指向远程主机的指针
unsigned char databuf[FILEBUF_SIZE]; //数据
int bytes = 0, bytesread = 0; //字节数,读取到的字节数     

host = gethostbyname(server); //根据远程主机的主机名,得到指向远程主机的指针
if (host == (struct hostent *) NULL) {  //如果得到指向远程主机的指针失败,报告错误,并返回
                perror("gethostbyname failed");
return 0;
}memset(&serv_adr, 0, sizeof(serv_adr)); //初始化远程主机的地址,结构体内所有成员清零
serv_adr.sin_family = AF_INET;       //设置地址类型
memcpy(&serv_adr.sin_addr, host->h_addr, host->h_length);//取出指向远程主机的指针中包含的地址信息,赋给远程主机地址变量
serv_adr.sin_port = htons(SERVICE_PORT);//设置端口号,比如http服务对应80端口,ftp对应21端口

  if ((sck = socket(AF_INET, SOCK_STREAM, 0)) < 0) { //如果建立TCP协议的套接字失败,报告错误,并返回
  perror("error on socket()");
  return 0;
}
if (connect(sck, (struct sockaddr *)&serv_adr, sizeof(serv_adr)) < 0) {//如果使用该套接字连接到远程主机失败,报告错误,并返回
perror("error on connect()");
return 0;
}write(sck, "DI\n\n", 4); //连接成功,发送内容为"DI\n\n"的消息,远程主机收到该消息,解析后生成目录列表,并将目录列表信息传递回来
printf("Remote directory listing:\n");//输出提示信息“远程主机正在生成目录列表”
while ((bytes = read(sck, databuf, FILEBUF_SIZE)) > 0) { //从套接字的数据流中读取远程主机的返回信息(即目录列表),每次读取FILEBUF_SIZE个字节,直到全部读取完毕
  write(fileno(stdout), databuf, bytes);//将每次读到的数据,输出到标准输出流(stdout),即屏幕上
  bytesread += bytes;//接收到的字节数累加
}

close(sck); /* Close the socket */ //通信完成,关闭套接字,关闭连接

return bytesread; //返回读取到的字节数(即远程主机返回的信息的大小)
}

分享到:
评论

相关推荐

    VC gethostbyname获取主机名和IP地址.rar

     // 获得主机ip地址  struct hostent * phost;  phost = gethostbyname(szhostname);//根据主机名获得IP地址  m_strName=szhostname;  int h_length=4;  for( int j = 0; j {   CString addr;   if( j &gt; 0 ...

    获取主机信息和协议信息源代码

    此程序先用gethostname得到主机名,再gethostbyname根据主机名得到主机信息,显示相关的主机所有信息。同时,程序还测试getprotobyname和getprotobynumber这两个函数,用两种不同的方法得到相关协议的信息。这是我写...

    使用GetHostByName获取IP

    ### 使用GetHostByName获取IP地址 #### 一、概述 在C++Builder环境中进行网络编程时,经常需要通过域名来获取对应的IP地址。这通常涉及到Winsock库的应用,特别是`GetHostByName`函数的使用。本文将详细介绍如何...

    PB11.5获取IP地址及主机名

    Messagebox("主机信息", "主机名: " + hostName + "\nIP地址: " + ipAddress) Else Messagebox("错误", "无法连接到本地回环地址") End If // 关闭Socket连接 socketObj.Close Destroy socketObj ``` 请注意,...

    获取主机信息源代码

    在IT领域,获取主机信息是常见的任务,这包括主机名、IP地址以及系统时间等基本数据。这些信息在网络管理、日志记录、系统监控等多个场景中都有着重要的作用。本篇将详细介绍如何通过源代码来获取这些关键信息,并...

    Python3获取电脑IP、主机名、Mac地址的方法示例

    本文实例讲述了Python3获取电脑IP、主机名、Mac地址的方法。分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #! python3 ''' Created on 2019年4月11日 @author: Administrator ''' import socket import...

    MFC获取主机名,IP地址,MAC地址

    在这个主题中,“MFC获取主机名,IP地址,MAC地址”指的是如何在MFC应用中获取计算机的相关网络信息。 首先,获取主机名是通过Windows API函数`GetComputerName`来完成的。这个函数允许程序获取当前系统的计算机名...

    VC++获取主机名和地址

    - `gethostbyname`: 这是一个较老的函数,根据主机名获取主机信息结构,其中包含IP地址。 ```cpp hostent* host = gethostbyname("hostname"); if (host != NULL) { // 使用host-&gt;h_addr_list获取IP地址 } ...

    获取主机名和主机ip地址

    - `GetAdaptersInfo()` 或 `GetHostByName()`:这两个函数可用于获取IP地址信息,它们通常通过.NET Framework中的类库(如System.Net.NetworkInformation命名空间)实现。 压缩包中的文件`test.pbl`、`test.pbt`和`...

    get_myaddress.rar_GetHostByName_gethostbyname linux

    当`gethostbyname`找不到本地缓存的主机信息时,可能会尝试查询NIS服务器,特别是那些在小型网络或者没有DNS服务器的情况下。NIS通过RPC(Remote Procedure Call)协议工作,使得客户端可以透明地在远程服务器上执行...

    gethostbyname 用法

    `gethostbyname`函数是C语言中用于获取主机名对应的IP地址的一个函数,它在处理DNS查询时非常实用。本文将详细介绍`gethostbyname`的用法及其在域名解析过程中的作用。 首先,让我们理解`gethostbyname`的基本概念...

    gethostbyname可执行代码

    这段Python代码通过`socket.getaddrinfo`获取所有地址信息,然后通过`socket.gethostbyname`将域名转换为IP地址。 至于提供的压缩包文件"Gethostbyname",可能包含了一个示例程序或者库,用于演示如何使用`...

    获取主机用户名和IP

    - 编程方式:在Python中,可以使用`socket.gethostbyname(socket.gethostname())`获取本机IP,使用`socket`库的`connect()`方法连接远程服务器并获取其IP。在Java中,可以使用`InetAddress.getLocalHost()....

    VC++获得主机名和IP地址

    在提供的压缩包“实例84 获得主机名和IP地址”中,应该包含了上述示例的源代码,可以直接编译运行,以验证和学习如何在VC++中实现这一功能。通过阅读和理解这些源代码,你可以更好地掌握如何在实际开发中运用这些API...

    获取主机名和IP地址

    对于IP地址,如果需要获取本地主机的所有网络接口的IP,可以使用`socket.gethostbyname_ex()`: ```python import socket hostname, aliases, ips = socket.gethostbyname_ex(socket.gethostname()) print("IP地址...

    C#获取本地主机IPmac地址

    - `Dns.GetHostByName()`:根据主机名获取IPHostEntry对象,其中包含IP地址等信息。 - `IPHostEntry.AddressList`:返回一个列表,其中包含所有与该主机名关联的IP地址。 ### 二、获取本地主机MAC地址 #### 1. ...

    自动获取主机名和IP

    在IT行业中,自动获取主机名和IP地址是网络编程中常见的需求,特别是在开发涉及网络通信的应用时。在Windows环境下,可以使用Visual C++ 6.0这样的开发工具来实现这一功能。下面将详细介绍如何利用VC++ 6.0进行...

    VC++获取主机IP

    3. **获取主机信息**:要获取主机的IP地址,可以使用`gethostname`函数来获取主机名,然后通过`gethostbyname`或`gethostbyaddr`函数将主机名转换为相应的IP地址结构体(`struct hostent`)。不过,这些函数在较新的...

    获得主机IP和主机名

    3. **获取本地主机信息**:要获取主机名,可以使用`gethostname`函数。它接受一个缓冲区和其大小作为参数,然后将主机名复制到缓冲区中。为了获取IP地址,可以使用`gethostbyname`或`getaddrinfo`函数。`...

    VC编程实现获取主机名和IP地址

    std::cout 获取主机信息失败" ; } else { for (int i = 0; hostInfo-&gt;h_addr_list[i] != NULL; ++i) { in_addr addr; memcpy(&addr, hostInfo-&gt;h_addr_list[i], sizeof(in_addr)); std::cout 地址: " (addr) ;...

Global site tag (gtag.js) - Google Analytics