Socket Programming-এ Socket System Calls হলো মূল ফাংশন বা মেথড, যা ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগ স্থাপন, ডেটা আদান-প্রদান, এবং সংযোগ বন্ধ করতে ব্যবহৃত হয়। নিচে প্রতিটি System Call-এর বিস্তারিত ব্যাখ্যা এবং তাদের ব্যবহার উল্লেখ করা হলো:
কাজ:
socket()
System Call একটি নতুন Socket তৈরি করে, যা ক্লায়েন্ট বা সার্ভারের মাধ্যমে নেটওয়ার্ক যোগাযোগের জন্য ব্যবহৃত হয়। এটি IP Address Family, Socket Type, এবং প্রোটোকল নির্ধারণ করে।সিনট্যাক্স:
int socket(int domain, int type, int protocol);
AF_INET
IPv4 এর জন্য, AF_INET6
IPv6 এর জন্য)।SOCK_STREAM
TCP এর জন্য, SOCK_DGRAM
UDP এর জন্য)।0
রাখা হয়, যা ডিফল্ট প্রোটোকল নির্ধারণ করে।উদাহরণ:
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
কাজ:
bind()
System Call একটি Socket-কে নির্দিষ্ট IP Address এবং Port Number-এর সাথে সংযুক্ত করে। এটি সাধারণত সার্ভারের ক্ষেত্রে ব্যবহৃত হয়।সিনট্যাক্স:
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
socket()
System Call থেকে ফেরত আসে।addr
স্ট্রাকচারের আকার নির্দেশ করে।উদাহরণ:
struct sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(8080);
server_addr.sin_addr.s_addr = INADDR_ANY;
bind(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr));
কাজ:
listen()
System Call সার্ভার Socket-কে ইনকামিং সংযোগের জন্য প্রস্তুত করে। এটি এক বা একাধিক ক্লায়েন্ট সংযোগ গ্রহণের জন্য সার্ভারকে অপেক্ষমাণ অবস্থায় রাখে।সিনট্যাক্স:
int listen(int sockfd, int backlog);
bind()
System Call থেকে সংযুক্ত করা হয়েছে।উদাহরণ:
listen(sockfd, 5);
কাজ:
accept()
System Call ইনকামিং সংযোগ গ্রহণ করে এবং ক্লায়েন্টের সাথে একটি নতুন Socket তৈরি করে, যা ডেটা ট্রান্সফার করার জন্য ব্যবহৃত হয়।সিনট্যাক্স:
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
sockfd: Socket file descriptor, যা ইনকামিং সংযোগের জন্য অপেক্ষা করছে।
উদাহরণ:
struct sockaddr_in client_addr;
socklen_t addr_size = sizeof(client_addr);
int new_sockfd = accept(sockfd, (struct sockaddr*)&client_addr, &addr_size);
কাজ:
connect()
System Call ক্লায়েন্ট Socket-কে সার্ভারের সাথে সংযোগ স্থাপন করতে ব্যবহৃত হয়। এটি সার্ভারের IP Address এবং Port Number ব্যবহার করে সংযোগ স্থাপন করে।সিনট্যাক্স:
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
উদাহরণ:
struct sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(8080);
server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
connect(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr));
কাজ:
send()
System Call ডেটা পাঠানোর জন্য ব্যবহৃত হয়। এটি TCP সংযোগে ডেটা ট্রান্সমিট করার জন্য Socket ব্যবহার করে।সিনট্যাক্স:
ssize_t send(int sockfd, const void *buf, size_t len, int flags);
0
)।উদাহরণ:
char *message = "Hello, Server!";
send(sockfd, message, strlen(message), 0);
কাজ:
recv()
System Call ডেটা গ্রহণের জন্য ব্যবহৃত হয়। এটি TCP সংযোগে ইনকামিং ডেটা প্যাকেট গ্রহণ করতে Socket ব্যবহার করে।সিনট্যাক্স:
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
0
)।উদাহরণ:
char buffer[1024];
recv(sockfd, buffer, sizeof(buffer), 0);
কাজ:
close()
System Call একটি Socket বন্ধ করতে ব্যবহৃত হয়। এটি সংযোগ বন্ধ করার এবং Socket রিসোর্স মুক্ত করার জন্য ব্যবহার করা হয়।সিনট্যাক্স:
int close(int sockfd);
উদাহরণ:
close(sockfd);
socket()
→ bind()
→ listen()
→ accept()
→ recv()
/send()
→ close()
socket()
→ connect()
→ send()
/recv()
→ close()
Read more