কম্পিউটার টিউটোরিয়াল

সি ভাষায় হোস্টনেম ও IP অ্যাড্রেস বের করার প্রোগ্রাম

সি প্রোগ্রামিং-এ সিস্টেমের হোস্টনেম এবং IP অ্যাড্রেস বের করতে নেটওয়ার্কিং হেডার ফাইলগুলো (<netdb.h>, <arpa/inet.h> ইত্যাদি) এবং সিস্টেম কল ব্যবহার করা হয়। এটি POSIX সিস্টেমে (লিনাক্স, macOS, Unix) কাজ করে।

ব্যবহৃত ফাংশনগুলো

পূর্ণ উদাহরণ (Linux/Unix)

#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 check_IP_buffer(char *IPbuffer) {
    if (IPbuffer == NULL) {
        perror("inet_ntoa");
        exit(1);
    }
}

int 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);

    // h_addr_list[0] হলো প্রথম IPv4 অ্যাড্রেস
    IP = inet_ntoa(*((struct in_addr*) host_entry->h_addr_list[0]));

    printf("Current Host Name: %s\n", host);
    printf("Host IP: %s\n", IP);

    return 0;
}

আউটপুট (নমুনা)

Current Host Name: soumyadeep-VirtualBox
Host IP: 127.0.1.1

গুরুত্বপূর্ণ নোট

  • gethostbyname() ডিপ্রিকেটেড (Deprecated) — আধুনিক কোডে getaddrinfo() ব্যবহার করুন (IPv6 সাপোর্ট, থ্রেড-সেফ)
  • inet_ntoa()ও ডিপ্রিকেটেড — inet_ntop() ব্যবহার করুন
  • উইন্ডোজে Winsock2.h লিংক করতে হয় (-lws2_32) এবং WSAStartup() কল করতে হয়
  • মাল্টি-হোম্ড সিস্টেমে (একাধিক NIC/IP) h_addr_list লুপ করে সব IP পাওয়া যায়

আধুনিক পদ্ধতি (getaddrinfo) — সংক্ষিপ্ত

struct addrinfo hints = {}, *res;
hints.ai_family = AF_INET; // IPv4
getaddrinfo(host, NULL, &hints, &res);
char ip[INET_ADDRSTRLEN];
inet_ntop(AF_INET, &((struct sockaddr_in*)res->ai_addr)->sin_addr, ip, sizeof(ip));
freeaddrinfo(res);
  1. জাভাস্ক্রিপ্ট রেজেক্স: শুধু নম্বর, লেটার ও আন্ডারস্কোর ভ্যালিডেশন

  2. স্ট্রিংয়ের পয়েন্টার অ্যারে এবং তাদের অ্যাড্রেস প্রিন্ট করার C প্রোগ্রাম

  3. Tkinter উইন্ডোতে হোস্ট নাম এবং IP ঠিকানা প্রদর্শন করা

  4. জিমেইলে আপনার ইমেল নাম এবং ঠিকানা পরিবর্তন করার পদ্ধতি

কপিরাইট © https://bd.wsxdn.com সমস্ত অধিকার সংরক্ষিত
ফাংশনকাজ
gethostname()লোকাল কম্পিউটারের স্ট্যান্ডার্ড হোস্টনেম বের করে
gethostbyname()হোস্টনেম থেকে হোস্ট ইনফো (IP ঠিকানা সহ) বের করে
inet_ntoa()IPv4 নেটওয়ার্ক অ্যাড্রেসকে ডটেড-ডেসিমাল স্ট্রিং-এ কনভার্ট করে