
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
How to get the IP Address of local computer using C/C++?
In this article, we will see how to get the Host name and IP address of the local system in an easier way using C and C++ program.
Getting IP Address of Local Computer
For this, some standard networking functions are available in socket programming with header files like <winsock2.h> on Windows and <sys/socket.h>, <netdb.h>, <arpa/inet.h> on Linux. In this article we will mainly discuss three commonly used functions:
Sr.No | Function & Description |
---|---|
1 |
gethostname() It finds the standard host name for the local computer. |
2 |
gethostbyname() It finds the host information corresponding to a host name from host database |
3 |
iten_ntoa() It converts an IPv4 Internet network address into an ASCII string into dotted decimal format. |
C Code to Get IP Address of Local Computer
Here is the following example code to get the Host name and IP address using the C language on a linux system.
In this program, we used header files <sys/socket.h>, <netdb.h>, <arpa/inet.h> to enable functions like gethostname() and gethostbyname() for retrieving the host name and IP address.
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <netdb.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> // This function returns host name for local computer void check_host_name(int hostname) { if (hostname == -1) { perror("gethostname"); exit(1); } } // This function will the find host info from host name void check_host_entry(struct hostent * hostentry) { if (hostentry == NULL){ perror("gethostbyname"); exit(1); } } // This function will convert IP string to dotted decimal format void IP_formatter(char *IPbuffer) { if (NULL == IPbuffer) { perror("inet_ntoa"); exit(1); } } int main() { char host[256]; char *IP; struct hostent *host_entry; int hostname; // it will find the host name of current machine hostname = gethostname(host, sizeof(host)); check_host_name(hostname); // it will find the host information host_entry = gethostbyname(host); check_host_entry(host_entry); IP = inet_ntoa(*((struct in_addr*) host_entry->h_addr_list[0])); // It will convert into IP string printf("Current Host Name: %s\n", host); printf("Host IP: %s\n", IP); }
Output
Current Host Name: 24abf9bb2a35 Host IP: 172.18.0.2
C++ Code to Get IP Address of Local Computer
Here is the following example code to get the Host name and IP address using the C++ language on a linux system.
In this program, we used header files <unistd.h>, <netdb.h> and <arpa/inet.h> to enable functions like gethostname() and gethostbyname() for retrieving the host name and IP address.
#include <iostream> #include <unistd.h> // this is for gethostname #include <netdb.h> // this is for gethostbyname #include <arpa/inet.h> // this is for inet_ntoa #include <cstring> using namespace std; int main() { char host[256]; // to get local host name if (gethostname(host, sizeof(host)) == -1) { perror("gethostname failed"); return 1; } cout << "Host Name: " << host << endl; // to get host information hostent* he = gethostbyname(host); if (he == nullptr) { cerr << "gethostbyname failed." << endl; return 1; } // to get and print the first IP address in_addr* addr = (in_addr*)he->h_addr_list[0]; cout << "IP Address: " << inet_ntoa(*addr) << endl; return 0; }
Output
Host Name: 24abf9bb2a35 IP Address: 172.18.0.2