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
Read more