এই সেকশনে আমরা দেখব কিভাবে লোকাল সিস্টেমের হোস্ট নাম এবং IP অ্যাড্রেস সহজে বের করা যায়। আমরা একটি সি প্রোগ্রাম লিখব হোস্ট নাম এবং IP বের করার জন্য।
নিচের ফাংশনগুলো ব্যবহার করা হয়েছে। এই ফাংশনগুলোর ভিন্ন ভিন্ন কাজ রয়েছে। ফাংশনগুলো এবং তাদের কাজ নিচে দেওয়া হলো:
| ফাংশন | বিবরণ |
|---|---|
| gethostname() | লোকাল কম্পিউটারের স্ট্যান্ডার্ড হোস্ট নাম খুঁজে বের করে। |
| gethostbyname() | হোস্ট ডাটাবেস থেকে হোস্ট নাম অনুযায়ী হোস্ট ইনফরমেশন খুঁজে বের করে। |
| inet_ntoa() | একটি IPv4 ইন্টারনেট নেটওয়ার্ক অ্যাড্রেসকে ASCII স্ট্রিং-এ ডটেড ডেসিমেল ফরম্যাটে রূপান্তর করে। |
উদাহরণ কোড
#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>
void check_host_name(int hostname) {
// এই ফাংশন লোকাল কম্পিউটারের হোস্ট নাম রিটার্ন করে
if (hostname == -1) {
perror("gethostname");
exit(1);
}
}
void check_host_entry(struct hostent *hostentry) {
// হোস্ট নাম থেকে হোস্ট ইনফো খুঁজে বের করে
if (hostentry == NULL) {
perror("gethostbyname");
exit(1);
}
}
void IP_formatter(char *IPbuffer) {
// IP স্ট্রিংকে ডটেড ডেসিমেল ফরম্যাটে রূপান্তর
if (NULL == IPbuffer) {
perror("inet_ntoa");
exit(1);
}
}
main() {
char host[256];
char *IP;
struct hostent *host_entry;
int hostname;
hostname = gethostname(host, sizeof(host)); // হোস্ট নাম বের করা
check_host_name(hostname);
host_entry = gethostbyname(host); // হোস্ট ইনফরমেশন বের করা
check_host_entry(host_entry);
IP = inet_ntoa(*((struct in_addr*) host_entry->h_addr_list[0])); // IP স্ট্রিং-এ রূপান্তর
printf("Current Host Name: %s\n", host);
printf("Host IP: %s\n", IP);
}
আউটপুট (লিনাক্স সিস্টেমে টেস্ট করা)
Current Host Name: soumyadeep-VirtualBox Host IP: 127.0.1.1