TCP Server এবং Client এর উদাহরণ

Computer Programming - ইউনিক্স সকেট (Unix Socket) - TCP Socket Programming (TCP Socket Programming)
312

TCP Server এবং Client-এর উদাহরণ দেখানোর জন্য আমরা C ভাষায় একটি সহজ প্রোগ্রাম তৈরি করবো, যেখানে সার্ভার একটি নির্দিষ্ট পোর্টে অপেক্ষা করবে এবং ক্লায়েন্ট সেই পোর্টে সংযোগ স্থাপন করে ডেটা পাঠাবে ও গ্রহণ করবে।

TCP 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 addrlen = sizeof(address);
   char buffer[1024] = {0};
   char *hello = "Hello from server";
   // 1. Socket তৈরি করা
   if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
       perror("Socket creation failed");
       exit(EXIT_FAILURE);
   }
   // 2. সার্ভার ঠিকানা সেটআপ করা
   address.sin_family = AF_INET;
   address.sin_addr.s_addr = INADDR_ANY;
   address.sin_port = htons(PORT);
   // 3. Binding করা
   if (bind(server_fd, (struct sockaddr*)&address, sizeof(address)) < 0) {
       perror("Bind failed");
       exit(EXIT_FAILURE);
   }
   // 4. Listening করা
   if (listen(server_fd, 3) < 0) {
       perror("Listen failed");
       exit(EXIT_FAILURE);
   }
   printf("Server is listening on port %d\n", PORT);
   // 5. Accepting সংযোগ
   if ((new_socket = accept(server_fd, (struct sockaddr*)&address, (socklen_t*)&addrlen)) < 0) {
       perror("Accept failed");
       exit(EXIT_FAILURE);
   }
   // 6. ডেটা গ্রহণ করা
   read(new_socket, buffer, 1024);
   printf("Client: %s\n", buffer);
   // 7. ডেটা পাঠানো
   send(new_socket, hello, strlen(hello), 0);
   printf("Hello message sent to client\n");
   // 8. Socket বন্ধ করা
   close(new_socket);
   close(server_fd);
   return 0;
}


TCP 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 *hello = "Hello from client";
   char buffer[1024] = {0};
   // 1. Socket তৈরি করা
   if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
       printf("Socket creation failed\n");
       return -1;
   }
   // 2. সার্ভার ঠিকানা সেটআপ করা
   serv_addr.sin_family = AF_INET;
   serv_addr.sin_port = htons(PORT);
   // 3. IP Address সেট করা
   if (inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr) <= 0) {
       printf("Invalid address or Address not supported\n");
       return -1;
   }
   // 4. সার্ভারের সাথে সংযোগ স্থাপন করা
   if (connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
       printf("Connection Failed\n");
       return -1;
   }
   // 5. ডেটা পাঠানো
   send(sock, hello, strlen(hello), 0);
   printf("Hello message sent to server\n");
   // 6. ডেটা গ্রহণ করা
   read(sock, buffer, 1024);
   printf("Server: %s\n", buffer);
   // 7. Socket বন্ধ করা
   close(sock);
   return 0;
}
প্রোগ্রাম বিশ্লেষণ

সার্ভার প্রোগ্রাম:

Socket তৈরি:

  • socket() ফাংশন ব্যবহার করে TCP প্রোটোকল ব্যবহার করে সার্ভারের জন্য একটি Socket তৈরি করা হয়।

Binding:

  • bind() ফাংশন সার্ভারের Socket-কে নির্দিষ্ট IP Address (INADDR_ANY, যা সমস্ত নেটওয়ার্ক ইন্টারফেস নির্দেশ করে) এবং পোর্ট (8080) এর সাথে সংযুক্ত করে।

Listening:

  • listen() ফাংশন সার্ভারের Socket-কে ইনকামিং সংযোগ গ্রহণের জন্য অপেক্ষমাণ রাখে।

Accepting সংযোগ:

  • accept() ফাংশন একটি ইনকামিং সংযোগ গ্রহণ করে এবং নতুন Socket তৈরি করে, যা ক্লায়েন্টের সাথে ডেটা ট্রান্সফার করতে ব্যবহৃত হয়।

ডেটা গ্রহণ এবং পাঠানো:

  • read() ফাংশন ব্যবহার করে ক্লায়েন্ট থেকে ডেটা গ্রহণ করা হয়, এবং send() ফাংশন ব্যবহার করে ক্লায়েন্টে ডেটা পাঠানো হয়।

Socket বন্ধ করা:

  • close() ফাংশন ব্যবহার করে নতুন Socket এবং সার্ভার Socket বন্ধ করা হয়।

ক্লায়েন্ট প্রোগ্রাম:

Socket তৈরি:

  • socket() ফাংশন ব্যবহার করে TCP প্রোটোকল ব্যবহার করে ক্লায়েন্টের জন্য একটি Socket তৈরি করা হয়।

সার্ভারের ঠিকানা সেটআপ:

  • inet_pton() ফাংশন সার্ভারের IP Address (127.0.0.1, যা localhost নির্দেশ করে) এবং পোর্ট (8080) সেট করে।

সার্ভারের সাথে সংযোগ স্থাপন:

  • connect() ফাংশন ব্যবহার করে ক্লায়েন্ট সার্ভারের সাথে সংযোগ স্থাপন করে।

ডেটা পাঠানো এবং গ্রহণ:

  • send() ফাংশন ব্যবহার করে সার্ভারে ডেটা পাঠানো হয় এবং read() ফাংশন ব্যবহার করে সার্ভার থেকে ডেটা গ্রহণ করা হয়।

Socket বন্ধ করা:

  • close() ফাংশন ব্যবহার করে ক্লায়েন্টের Socket বন্ধ করা হয়।

কিভাবে এই প্রোগ্রামগুলো চালাবেন

প্রথমে সার্ভার প্রোগ্রাম চালু করুন:

  • সার্ভার একটি নির্দিষ্ট পোর্ট (এখানে 8080) এ ইনকামিং সংযোগের জন্য অপেক্ষা করবে।

এরপর ক্লায়েন্ট প্রোগ্রাম চালু করুন:

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

ক্লায়েন্ট এবং সার্ভারের মধ্যে বার্তা আদান-প্রদান:

  • সার্ভার বার্তাটি গ্রহণ করে ক্লায়েন্টকে একটি বার্তা পাঠাবে। উভয় প্রোগ্রামে বার্তা প্রদর্শিত হবে।
Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...