Client এবং Server তৈরি করা
Client-Server মডেল হল একটি জনপ্রিয় আর্কিটেকচার যেখানে একটি Client (ক্লায়েন্ট) অ্যাপ্লিকেশন সার্ভারের সাথে যোগাযোগ করে এবং সেখান থেকে ডেটা বা সেবা প্রাপ্তি করে। VB.Net-এ একটি সিম্পল Client এবং Server তৈরি করার জন্য, আপনি Sockets ব্যবহার করতে পারেন।
এখানে আমরা একটি সিম্পল TCP/IP ক্লায়েন্ট এবং সার্ভার অ্যাপ্লিকেশন তৈরি করব, যেখানে সার্ভার একটি মেসেজ গ্রহণ করবে এবং ক্লায়েন্ট তার সাথে যোগাযোগ করবে।
১. Server (সার্ভার) তৈরি করা
Server হল একটি অ্যাপ্লিকেশন যা নির্দিষ্ট পোর্টে কাজ করে এবং এটি ক্লায়েন্টের রিকোয়েস্ট গ্রহণ করে এবং তার জন্য সেবা প্রদান করে।
Server তৈরি করার উদাহরণ:
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Public Class Server
Private serverSocket As TcpListener
Private clientSocket As TcpClient
Public Sub StartServer()
' সার্ভার পোর্ট এবং আইপি সেট করা
serverSocket = New TcpListener(IPAddress.Parse("127.0.0.1"), 5000)
serverSocket.Start()
Console.WriteLine("Server started... Waiting for a connection...")
' ক্লায়েন্টের সাথে সংযোগ স্থাপন করা
clientSocket = serverSocket.AcceptTcpClient()
Console.WriteLine("Client connected!")
' ডেটা গ্রহণ করার জন্য স্ট্রিম তৈরি করা
Dim stream As NetworkStream = clientSocket.GetStream()
Dim reader As New System.IO.StreamReader(stream)
Dim message As String = reader.ReadLine()
' ক্লায়েন্ট থেকে আসা মেসেজ প্রদর্শন করা
Console.WriteLine("Message from client: " & message)
' ক্লায়েন্টের সাথে সংযোগ বন্ধ করা
reader.Close()
clientSocket.Close()
serverSocket.Stop()
End Sub
End Class
Module Module1
Sub Main()
' সার্ভার শুরু করা
Dim myServer As New Server()
myServer.StartServer()
End Sub
End Moduleব্যাখ্যা:
TcpListenerক্লাস ব্যবহার করে সার্ভার পোর্ট এবং আইপি ঠিকানা নির্দিষ্ট করা হয়েছে।AcceptTcpClient()মেথড ক্লায়েন্টের সাথে সংযোগ স্থাপন করার জন্য ব্যবহৃত হয়েছে।- NetworkStream ব্যবহার করে সার্ভার ক্লায়েন্ট থেকে ডেটা পড়ছে।
- সার্ভার ক্লায়েন্টের মেসেজ প্রদর্শন করার পর সংযোগ বন্ধ করছে।
২. Client (ক্লায়েন্ট) তৈরি করা
Client হল একটি অ্যাপ্লিকেশন যা সার্ভারের সাথে সংযোগ স্থাপন করে এবং সার্ভারে ডেটা পাঠায়।
Client তৈরি করার উদাহরণ:
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Public Class Client
Private clientSocket As TcpClient
Public Sub StartClient()
' সার্ভারের আইপি এবং পোর্ট সেট করা
clientSocket = New TcpClient("127.0.0.1", 5000)
Console.WriteLine("Connected to server!")
' ডেটা পাঠানোর জন্য স্ট্রিম তৈরি করা
Dim stream As NetworkStream = clientSocket.GetStream()
Dim writer As New System.IO.StreamWriter(stream)
' সার্ভারে মেসেজ পাঠানো
writer.WriteLine("Hello, Server!")
writer.Flush()
' সংযোগ বন্ধ করা
writer.Close()
clientSocket.Close()
End Sub
End Class
Module Module1
Sub Main()
' ক্লায়েন্ট শুরু করা
Dim myClient As New Client()
myClient.StartClient()
End Sub
End Moduleব্যাখ্যা:
TcpClientক্লাস ব্যবহার করে ক্লায়েন্ট সার্ভারের সাথে সংযোগ স্থাপন করেছে।- NetworkStream ব্যবহার করে ক্লায়েন্ট সার্ভারে মেসেজ পাঠাচ্ছে।
StreamWriterব্যবহার করে সার্ভারে পাঠানোর জন্য টেক্সট স্ট্রিম তৈরি করা হচ্ছে।- ক্লায়েন্ট মেসেজ পাঠানোর পর সংযোগ বন্ধ করছে।
৩. TCP/IP সাকেট ব্যবহার করে Client এবং Server এর মধ্যে যোগাযোগ
এখন, আমরা দেখেছি কীভাবে একটি সিম্পল Client এবং Server তৈরি করা যায় TCP/IP সাকেট ব্যবহার করে। এখানে একটি সংক্ষিপ্ত সারাংশ দেওয়া হল:
| Component | Server (TCP Listener) | Client (TCP Client) |
|---|---|---|
| Connection | TcpListener ব্যবহার করে পোর্ট এবং আইপি ঠিকানা নির্ধারণ করা হয়। | TcpClient ব্যবহার করে সার্ভারের আইপি এবং পোর্টের সাথে সংযোগ স্থাপন করা হয়। |
| Data Transmission | NetworkStream এবং StreamReader ব্যবহার করে ডেটা গ্রহণ করা হয়। | NetworkStream এবং StreamWriter ব্যবহার করে সার্ভারে ডেটা পাঠানো হয়। |
| Communication Flow | সার্ভার ক্লায়েন্টের রিকোয়েস্ট গ্রহণ করে এবং মেসেজ প্রদান করে। | ক্লায়েন্ট সার্ভারে মেসেজ পাঠায় এবং সার্ভারের রেসপন্স গ্রহণ করে। |
৪. Multiple Clients Handling (একাধিক ক্লায়েন্ট পরিচালনা)
একাধিক ক্লায়েন্টের সাথে যোগাযোগ করার জন্য সার্ভারে থ্রেডিং ব্যবহার করা যেতে পারে যাতে প্রতিটি ক্লায়েন্টের জন্য একটি পৃথক থ্রেড তৈরি করা হয়। এটি সার্ভারকে একাধিক ক্লায়েন্টের সাথে একযোগে যোগাযোগ করতে সাহায্য করে।
Imports System.Net
Imports System.Net.Sockets
Imports System.Threading
Imports System.IO
Public Class Server
Private serverSocket As TcpListener
Public Sub StartServer()
serverSocket = New TcpListener(IPAddress.Parse("127.0.0.1"), 5000)
serverSocket.Start()
Console.WriteLine("Server started...")
' একাধিক ক্লায়েন্টের জন্য আলাদা থ্রেড তৈরি
While True
Dim clientSocket As TcpClient = serverSocket.AcceptTcpClient()
Console.WriteLine("Client connected!")
' থ্রেড শুরু করা
Dim clientThread As New Thread(AddressOf HandleClient)
clientThread.Start(clientSocket)
End While
End Sub
' ক্লায়েন্টের জন্য থ্রেড মেথড
Private Sub HandleClient(clientSocket As TcpClient)
Dim stream As NetworkStream = clientSocket.GetStream()
Dim reader As New StreamReader(stream)
' ক্লায়েন্ট থেকে ডেটা পড়া
Dim message As String = reader.ReadLine()
Console.WriteLine("Message from client: " & message)
reader.Close()
clientSocket.Close()
End Sub
End Class
Module Module1
Sub Main()
' সার্ভার শুরু করা
Dim myServer As New Server()
myServer.StartServer()
End Sub
End Moduleব্যাখ্যা:
- এখানে সার্ভার একটি থ্রেড তৈরি করে প্রতিটি ক্লায়েন্টের জন্য আলাদা থ্রেড ব্যবহার করে তাদের সাথে যোগাযোগ করছে।
HandleClientমেথডটি প্রতিটি ক্লায়েন্টের সাথে একযোগভাবে যোগাযোগ করতে ব্যবহৃত হয়।
সারাংশ
- Server এবং Client তৈরি করার জন্য TcpListener (Server) এবং TcpClient (Client) ব্যবহার করা হয়।
- NetworkStream এবং StreamReader/StreamWriter ব্যবহার করে ডেটা পাঠানো এবং গ্রহণ করা হয়।
- Threading ব্যবহার করে একাধিক ক্লায়েন্টের সাথে যোগাযোগ পরিচালনা করা যায়।
এই উদাহরণগুলির মাধ্যমে আপনি সহজেই Client-Server আর্কিটেকচার তৈরি করতে পারেন এবং সাকেট ব্যবহার করে ডেটা ট্রান্সফার করতে পারেন।
Read more