21xrx.com
2024-12-27 05:25:39 Friday
登录
文章检索 我的文章 写文章
如何在C语言中获取本地IP地址
2023-06-15 09:40:38 深夜i     --     --
C语言 获取本地IP地址 gethostname函数 gethostbyname函数 socket编程

在网络编程中,获取本地IP地址是相当常见的需求,而在C语言中实现这一功能也并不复杂。可以通过socket编程中提供的gethostname函数来获取主机名,再通过gethostbyname函数来获取对应的IP地址。接下来我们将详细介绍如何通过C语言获取本地IP地址。

首先,在程序中引入 , , 三个头文件,这些头文件中都包含了用于获取IP地址的相关函数。

之后,通过gethostname函数获取当前主机名。该函数的原型如下:


int gethostname(char* name, size_t len);

其中,name为主机名字符串指针,len为主机名字符串长度,函数返回值为0表示成功获取主机名,-1表示失败。

获取主机名后,调用gethostbyname函数获取主机对应的IP地址。函数原型如下:


struct hostent* gethostbyname(const char* name);

其中,name为主机名字符串指针,函数返回值为hostent结构体指针,包含了主机对应的IP地址信息。

最后,通过打印hostent结构体中的h_addr_list数组中的值,即可获取对应的IP地址。

下面是获取本地IP地址的完整代码:


#include

#include

#include

#include

#include

int main() {

  char name[128];

  struct hostent* host;

  int i;

  if(gethostname(name, sizeof(name)) == 0) {

    host = gethostbyname(name);

    if(host != NULL) {

      printf("IP address of %s:\n", name);

      for(i = 0; host->h_addr_list[i]; i++) {

        printf("%d.%d.%d.%d\n",

          (unsigned char)host->h_addr_list[i][0],

          (unsigned char)host->h_addr_list[i][1],

          (unsigned char)host->h_addr_list[i][2],

          (unsigned char)host->h_addr_list[i][3]);

      }

    }

  }

  return 0;

}

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复