Client-Server Application তৈরি

MFC Network Programming এবং Communication - এমএফসি (MFC) - Microsoft Technologies

326

Client-Server Architecture হল একটি সাধারণ সফটওয়্যার আর্কিটেকচার, যেখানে ক্লায়েন্ট এবং সার্ভার আলাদা দুটি প্রোগ্রাম হিসেবে কাজ করে এবং তারা নেটওয়ার্কের মাধ্যমে একে অপরের সাথে যোগাযোগ করে। ক্লায়েন্ট সাধারণত সার্ভারের কাছে সার্ভিস বা রিসোর্সের অনুরোধ পাঠায়, এবং সার্ভার সেই অনুরোধ গ্রহণ করে প্রয়োজনীয় সেবা বা ডেটা প্রদান করে। MFC (Microsoft Foundation Classes) ব্যবহার করে ক্লায়েন্ট-সার্ভার অ্যাপ্লিকেশন তৈরি করা সম্ভব, যেখানে TCP/IP বা UDP প্রোটোকল ব্যবহার করা হয়।


Client-Server Communication Basics

Client: এটি একটি প্রোগ্রাম যা সার্ভারের কাছে কিছু অনুরোধ পাঠায় এবং সার্ভার থেকে প্রাপ্ত ফলাফল গ্রহণ করে।

Server: এটি একটি প্রোগ্রাম যা ক্লায়েন্টের অনুরোধ গ্রহণ করে এবং তার উপর কাজ করে ফলাফল প্রদান করে।


TCP/IP Sockets

TCP/IP প্রোটোকল ব্যবহার করে ক্লায়েন্ট-সার্ভার অ্যাপ্লিকেশন তৈরি করতে Sockets ব্যবহার করা হয়। সিস্টেমের একটি নির্দিষ্ট IP ঠিকানা এবং পোর্ট নম্বরে ক্লায়েন্ট এবং সার্ভার একে অপরের সাথে যোগাযোগ করতে পারে।

  • TCP (Transmission Control Protocol): এটি একটি নির্ভরযোগ্য প্রোটোকল, যা ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটার সঠিক এবং পূর্ণাঙ্গ আদান-প্রদান নিশ্চিত করে।
  • UDP (User Datagram Protocol): এটি একটি অ-নির্ভরযোগ্য প্রোটোকল, যেখানে ডেটা দ্রুত প্রেরণ করা হয়, তবে সঠিকতা বা পূর্ণতা নিশ্চিত করা হয় না।

MFC তে ক্লায়েন্ট-সার্ভার অ্যাপ্লিকেশন তৈরি করতে, CSocket ক্লাস ব্যবহার করা হয়।


Client-Side (Client Application)

ক্লায়েন্ট সাইডে একটি সোকেট তৈরি করে, এটি সার্ভারের সাথে সংযোগ স্থাপন করে এবং ডেটা পাঠায়।

Code Example (Client-Side with CSocket):

// ClientSide.cpp
#include <afxwin.h>
#include <afxsock.h>

class CMyClientApp : public CWinApp
{
public:
    virtual BOOL InitInstance();
};

BOOL CMyClientApp::InitInstance()
{
    // সোকেট লাইব্রেরি ইনিশিয়ালাইজ করা
    AfxSocketInit();

    // সোকেট অবজেক্ট তৈরি
    CSocket socket;
    if (socket.Create())
    {
        // সার্ভারের আইপি এবং পোর্ট দিয়ে সংযোগ স্থাপন করা
        if (socket.Connect("127.0.0.1", 5000)) 
        {
            // সার্ভারে পাঠানোর ডেটা
            CString message = _T("Hello from Client!");

            // সার্ভারে মেসেজ পাঠানো
            socket.Send(message, message.GetLength() * sizeof(TCHAR));

            // সবার পর সোকেট বন্ধ করা
            socket.Close();
        }
    }

    return FALSE;
}

CMyClientApp theApp;

এখানে, CSocket ক্লাসের মাধ্যমে সোকেট তৈরি করা হয়েছে এবং socket.Connect() ফাংশনের মাধ্যমে সার্ভারের IP ঠিকানা এবং পোর্ট নম্বরে সংযোগ স্থাপন করা হয়েছে। তারপর, socket.Send() এর মাধ্যমে ক্লায়েন্ট সার্ভারে একটি মেসেজ পাঠাচ্ছে।


Server-Side (Server Application)

সার্ভার সাইডে একটি সোকেট তৈরি করা হয়, এটি ক্লায়েন্টের অনুরোধ গ্রহণ করে এবং উত্তর দেয়।

Code Example (Server-Side with CSocket):

// ServerSide.cpp
#include <afxwin.h>
#include <afxsock.h>

class CMyServerApp : public CWinApp
{
public:
    virtual BOOL InitInstance();
};

BOOL CMyServerApp::InitInstance()
{
    // সোকেট লাইব্রেরি ইনিশিয়ালাইজ করা
    AfxSocketInit();

    // সার্ভার সোকেট তৈরি করা
    CSocket serverSocket;
    if (serverSocket.Create(5000))  // পোর্ট 5000 এ সার্ভার শুরু হচ্ছে
    {
        if (serverSocket.Listen())
        {
            // ক্লায়েন্টের সংযোগের জন্য অপেক্ষা করা
            CSocket clientSocket;
            if (serverSocket.Accept(clientSocket))
            {
                CString receivedMessage;
                int bytesRead = 0;

                // ক্লায়েন্ট থেকে মেসেজ গ্রহণ করা
                clientSocket.Receive(receivedMessage.GetBufferSetLength(1024), 1024);
                receivedMessage.ReleaseBuffer();

                AfxMessageBox(_T("Received: ") + receivedMessage);

                // সোকেট বন্ধ করা
                clientSocket.Close();
            }
        }
    }

    return FALSE;
}

CMyServerApp theApp;

এখানে, CSocket ক্লাসের মাধ্যমে একটি সার্ভার সোকেট তৈরি করা হয়েছে এবং serverSocket.Listen() ফাংশনের মাধ্যমে সার্ভার ক্লায়েন্টের সংযোগের জন্য অপেক্ষা করছে। সংযোগ স্থাপন হলে, clientSocket.Receive() এর মাধ্যমে ক্লায়েন্ট থেকে মেসেজ গ্রহণ করা হয়।


সার্ভার ও ক্লায়েন্ট এর মধ্যে যোগাযোগের সারাংশ:

  1. Client-Side: ক্লায়েন্ট একটি সোকেট তৈরি করে, সার্ভারের IP ঠিকানা এবং পোর্ট নম্বর দিয়ে সংযোগ স্থাপন করে, এবং ডেটা পাঠায়।
  2. Server-Side: সার্ভার একটি সোকেট তৈরি করে এবং ক্লায়েন্টের সংযোগ গ্রহণ করে। সার্ভার ক্লায়েন্ট থেকে ডেটা গ্রহণ করে এবং প্রয়োজনীয় উত্তর পাঠায়।
  3. Communication Protocol: ক্লায়েন্ট ও সার্ভারের মধ্যে যোগাযোগের জন্য TCP/IP সোকেট ব্যবহার করা হয়।

সারাংশ

Client-Server Application তৈরির জন্য, MFC তে CSocket ক্লাস ব্যবহার করে সোকেট তৈরি করতে হয়। ক্লায়েন্ট সাইডে সোকেট তৈরি করে সার্ভারের সাথে সংযোগ স্থাপন করা হয় এবং ডেটা পাঠানো হয়। সার্ভার সাইডে সোকেট তৈরি করা হয় এবং ক্লায়েন্ট থেকে প্রাপ্ত ডেটা গ্রহণ করে প্রক্রিয়া সম্পাদন করা হয়। TCP/IP প্রোটোকলের মাধ্যমে ক্লায়েন্ট এবং সার্ভার একে অপরের সাথে যোগাযোগ করতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...