Client-Server মডেলে Socket প্রোগ্রামিং

প্র্যাকটিস প্রোজেক্টস - ইন্টার প্রসেস কমিউনিকেশন (Inter Process Communication) - Computer Science

390

Client-Server মডেল হল একটি জনপ্রিয় আর্কিটেকচারাল কৌশল যা নেটওয়ার্কে বিভিন্ন ডিভাইসের মধ্যে যোগাযোগকে সহজ করে। Socket প্রোগ্রামিং ব্যবহার করে, ক্লায়েন্ট এবং সার্ভারের মধ্যে তথ্য আদান-প্রদান করার একটি কার্যকরী পদ্ধতি তৈরি করা যায়। আসুন Client-Server মডেলে Socket প্রোগ্রামিংয়ের বিভিন্ন দিক আলোচনা করি।

Client-Server Architecture

১. Client: ক্লায়েন্ট হল সেই অ্যাপ্লিকেশন বা প্রক্রিয়া যা সার্ভারের কাছে একটি পরিষেবা বা তথ্যের জন্য অনুরোধ পাঠায়। এটি ব্যবহারকারীর পক্ষ থেকে কাজ করে এবং সার্ভারের কাছে যোগাযোগ করে।

২. Server: সার্ভার হল সেই অ্যাপ্লিকেশন বা প্রক্রিয়া যা ক্লায়েন্টের কাছ থেকে আসা অনুরোধগুলি গ্রহণ করে এবং তার প্রয়োজনীয় তথ্য বা পরিষেবা প্রদান করে।

Socket Programming এর মূল উপাদান

১. Socket: একটি Socket হল একটি সফটওয়্যার অবজেক্ট যা একটি নেটওয়ার্কের মাধ্যমে যোগাযোগের জন্য ব্যবহৃত হয়। এটি একটি IP ঠিকানা এবং পোর্ট নম্বরের সাথে যুক্ত থাকে।

২. TCP এবং UDP: Socket প্রোগ্রামিংয়ে সাধারণত TCP (Transmission Control Protocol) এবং UDP (User Datagram Protocol) ব্যবহার করা হয়।

  • TCP: এটি কানেকশন-ভিত্তিক, নিরাপদ এবং নির্ভরযোগ্য।
  • UDP: এটি কানেকশনহীন, দ্রুত কিন্তু কম নিরাপদ।

Socket প্রোগ্রামিংয়ের ধাপ

1. সার্ভার প্রোগ্রাম তৈরি করা

  • Socket তৈরি করা: socket() ফাংশন ব্যবহার করে একটি নতুন Socket তৈরি করুন।
  • Bind করা: সার্ভারের IP ঠিকানা এবং পোর্ট নম্বরের সাথে Socket যুক্ত করুন।
  • Listen করা: ক্লায়েন্টের জন্য অপেক্ষা করুন।
  • Accept করা: ক্লায়েন্টের সংযোগ গ্রহণ করুন।
  • Data Communication: ক্লায়েন্টের সাথে তথ্য আদান-প্রদান করুন।
  • Close করা: Socket বন্ধ করুন।

সার্ভার কোড (server.c):

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>

#define PORT 8080

int main() {
    int server_fd, new_socket;
    struct sockaddr_in address;
    int opt = 1;
    int addrlen = sizeof(address);
    char buffer[1024] = {0};

    // সার্ভার Socket তৈরি
    server_fd = socket(AF_INET, SOCK_STREAM, 0);
    setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
    address.sin_family = AF_INET;
    address.sin_addr.s_addr = INADDR_ANY;
    address.sin_port = htons(PORT);

    // Socket যুক্ত করা
    bind(server_fd, (struct sockaddr *)&address, sizeof(address));
    listen(server_fd, 3);

    // ক্লায়েন্টের সংযোগ গ্রহণ করা
    new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen);
    read(new_socket, buffer, 1024);
    printf("Received: %s\n", buffer);

    // ক্লায়েন্টের প্রতি উত্তর পাঠান
    char *message = "Hello from server!";
    send(new_socket, message, strlen(message), 0);

    // Socket বন্ধ করুন
    close(new_socket);
    close(server_fd);
    return 0;
}

2. ক্লায়েন্ট প্রোগ্রাম তৈরি করা

  • Socket তৈরি করা: socket() ফাংশন ব্যবহার করে একটি নতুন Socket তৈরি করুন।
  • Connect করা: সার্ভারের সাথে সংযোগ স্থাপন করুন।
  • Data Communication: সার্ভারের সাথে তথ্য আদান-প্রদান করুন।
  • Close করা: Socket বন্ধ করুন।

ক্লায়েন্ট কোড (client.c):

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>

#define PORT 8080

int main() {
    int sock = 0;
    struct sockaddr_in serv_addr;
    char *message = "Hello from client!";
    char buffer[1024] = {0};

    // ক্লায়েন্ট Socket তৈরি
    sock = socket(AF_INET, SOCK_STREAM, 0);
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = htons(PORT);

    // সার্ভারের IP ঠিকানা সেট করা
    inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr);

    // সার্ভারের সাথে সংযোগ স্থাপন
    connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr));

    // সার্ভারে ডেটা পাঠান
    send(sock, message, strlen(message), 0);
    read(sock, buffer, sizeof(buffer)); // সার্ভার থেকে ডেটা গ্রহণ করা
    printf("Received from server: %s\n", buffer); // মেসেজ প্রদর্শন

    // Socket বন্ধ করুন
    close(sock);
    return 0;
}

উদাহরণ বিশ্লেষণ

১. সার্ভার কোড:

  • সার্ভার Socket তৈরি করে, IP ঠিকানা এবং পোর্ট নম্বরের সাথে যুক্ত করে, ক্লায়েন্টের সংযোগ গ্রহণ করে, এবং ক্লায়েন্ট থেকে মেসেজ পড়ে এবং একটি প্রতিক্রিয়া পাঠায়।

২. ক্লায়েন্ট কোড:

  • ক্লায়েন্ট একটি Socket তৈরি করে, সার্ভারের সাথে সংযোগ স্থাপন করে, সার্ভারকে একটি মেসেজ পাঠায় এবং সার্ভার থেকে একটি প্রতিক্রিয়া গ্রহণ করে।

উপসংহার

Socket Programming Client-Server মডেলে যোগাযোগের একটি গুরুত্বপূর্ণ প্রযুক্তি। TCP/IP প্রোটোকলের মাধ্যমে ক্লায়েন্ট এবং সার্ভারের মধ্যে নিরাপদ এবং নির্ভরযোগ্য তথ্য বিনিময় নিশ্চিত করতে এটি ব্যাপকভাবে ব্যবহৃত হয়। এই উদাহরণগুলো সাহায্য করে একটি মৌলিক ক্লায়েন্ট-সার্ভার অ্যাপ্লিকেশন তৈরি করতে, যা নেটওয়ার্কিংয়ের ধারণা বুঝতে সহায়ক।

Promotion

Are you sure to start over?

Loading...