Computer Programming || Gaming || Technology || ai

socket programming


COPIED FROM:w3programmers

 

socket একটি সফটওয়্যার।কম্পিউটারের কোন প্রোগ্রাম ইন্টারনেটের সাথে যুক্ত হতে চায়, তখন এটি একধরণের সফটওয়্যার ব্যবহার করে, যেটাকে বলা হয় সকেট। সকেট সংশ্লিষ্ট প্রোগ্রামের জন্য নেটওয়ার্ক সংযোগ দেয় এবং নেটওয়ার্কের মাধ্যমে ডাটা রিড ও রাইটের ব্যবস্থা করে দেয়।

 

Socket Programming এর জন্য কি ধরনের socket ব্যবহার করা হয়?

Socket Programming এর জন্য দুই ধরনের socket ব্যবহার করা হয়:

    • TCP

TCP হচ্ছে কানেকশন ওরিয়েন্টেড প্রোটকল । অর্থাৎ ডাটা ট্রান্সফার এর জন্য আগে একে অপরের সাথে সাথে কানেক্ট হয়ে নিবে এবং যতক্ষণ কানেক্টেড থাকবে ততক্ষণ স্ট্রিমের মাধ্যমে ডাটা ট্রান্সফার করবে ।

    • UDP

UDP হচ্ছে কানেকশন লেস প্রোটকল । মানে ডাটা ট্রান্সফার এর জন্য আগে থেকেই কানেক্টেড হয়ে থাকতে হয় না ।ডাটা ট্রান্সফার এর সময় কানেক্ট হয়ে ডাটা ট্রান্সফার করে ।

দুইটা সিস্টেম একে ওপরের সাথে যোগাযোগের জন্য একটা হবে Client আর একটা হবে Host । Host wait করতে থাকে কোন Client তার সাথে Connect হওয়ার জন্য । এবং একবার কানেক্ট হলে একে ওপরের সাথে ডাটা ট্রান্সফার করতে পারবে ।

PHP Sockets

PHP Sockets

Socket Programming দিয়ে কিভাবে Socket Server তৈরী করবেন?

Socket Programming দিয়ে কিভাবে server এর সাথে কানেক্ট করা যায় তা ধাপে ধাপে দেখানো হলো :

ধাপ -১: port এবং host সেট

প্রথমে আমরা দুটি variable port এবং host সেট করব :

1
2
3
4
$host = "127.0.0.1";
$port = 80;
// No Timeout
set_time_limit(0);

ধাপ ২: সকেট তৈরী

এবার আমরা সকেট তৈরী করব। আর এর জন্য আমরা socket_create() function ব্যবহার করব। আর socket_create() function এ তিনটি Parameter দিতে হবে। প্রথম Parameter টি হবে protocol family অর্থাৎ কোন ip ফ্যামিলি (ipv-4 নাকি ipv-6) দিয়ে socket তৈরী করবেন। দ্বিতীয় parameter এ দিতে হবে communication type . অর্থাৎ যোগাযোগের ধরণ। আর সর্বশেষ parameter টি হবে protocol অর্থাৎ tcp নাকি udp. আর এই প্রত্যেকটি parameter এর জন্য PHP তে built-in constant আছে , চলুন একটা Socket তৈরী করা যাক :

1
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");

ধাপ ৩: পোর্ট এবং হোস্ট এর সাথে socket কে bind করা :

এখন আমরা আমাদের তৈরী সকেট রিসোর্স এর সাথে IP address এবং Port Number Bind করব। আর এর জন্য আপনাকে socket_bind() function টি ব্যবহার করতে হবে। এবং আপনার তৈরি socket, host এবং port কে যথাক্রমে parameter হিসেবে দিতে হবে।

1
$result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n");

ধাপ ৪: সকেট Listen করা :

socket_bind() function দিয়ে IP এবং পোর্ট সার্ভারের সাথে আবদ্ধ হওয়ার পর ক্লায়েন্টের সাথে সংযুক্ত হওয়ার জন্য অপেক্ষা করা হয়। তারপর পর্যন্ত Listen অপেক্ষা রাখে। আর এর জন্য আপনাকে socket_listen() function টি ব্যবহার করতে হবে। সকেট listen function এ আপনাকে দুটি parameter দিতে হবে , প্রথমটি সকেট কানেকশন এবং দ্বিতীয় পারমিটের হচ্ছে backlog দিতে হবে।

1
$result = socket_listen($socket, 3) or die("Could not set up socket listener\n");

ধাপ ৫: Incoming Connection Accept

Incoming Connection গুলো accept করার জন্য আপনাকে socket_accept() function টি ব্যবহার করতে হবে। এই ফাংশন তৈরি সকেটের মধ্যে ইনকামিং সংযোগ রিকোয়েস্ট করে। ক্লায়েন্ট সকেট থেকে সংযোগ গ্রহণের পরে, এই ফাংশনটি অন্য সকেটের রিসোর্স প্রদান করে যা আসলে সংশ্লিষ্ট ক্লায়েন্ট সকেটের সাথে যোগাযোগের কাজ করে।

1
$spawn = socket_accept($socket) or die("Could not accept incoming connection\n");

এখানে “$spawn” হল socket resource যা ক্লায়েন্ট সকেটের সাথে যোগাযোগের কাজ করে।

এতক্ষন, আমরা আমাদের সার্ভার সকেট তৈরি করেছি কিন্তু স্ক্রিপ্ট আসলে আসলে কিছুই করে না। এখন আমরা ক্লায়েন্ট সকেট থেকে বার্তা পড়ব এবং তারপর আবার প্রাপ্ত বার্তাটি ক্লায়েন্ট সকেটে ফেরত পাঠাতে পারব।

ধাপ ৬: ক্লায়েন্ট সকেট থেকে Message Read

socket এর message read করার জন্য আপনাকে socket_read() function টি ব্যবহার করতে হবে। এবং দুটি Parameter যথাক্রমে আপনার socket এবং length বলতে হবে।

1
$input = socket_read($spawn, 1024) or die("Could not read input\n");

ধাপ ৭: Message Reply

1
$output = "Hello, You send message: ".$input. "\n";

ধাপ ৮: ক্লায়েন্ট সকেটে Message Reply:

client socket এর message reply করার জন্য আপনাকে socket_write() function টি ব্যবহার করতে হবে। এবং তিনটি Parameter যথাক্রমে আপনার socket accept, Output এবং length বলতে হবে।

1
socket_write($spawn, $output, strlen ($output)) or die("Could not write output\n");

Close the socket

1
2
socket_close($spawn);
socket_close($socket);

Socket Programming দিয়ে কিভাবে Client Socket তৈরী করবেন?

Socket Programming দিয়ে কিভাবে Client Socket তৈরী করা যায় তা ধাপে ধাপে দেখানো হলো :

Socket Client এর প্রথম দুটি ধাপ Socket Server এর মতোই।

ধাপ -১: port এবং host সেট

1
2
3
4
$host = "127.0.0.1";
$port = 80;
// No Timeout
set_time_limit(0);

ধাপ ২: সকেট তৈরী

1
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");

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

সার্ভারের সাথে connect করতে হলে আপনাকে socket_connect() function টি ব্যবহার করতে হবে, এবং parameter হিসেবে যথাক্রমে socket, host এবং port দিতে হবে।

1
$result = socket_connect($socket, $host, $port) or die("Could not connect to server\n");

ধাপ ৪: সার্ভার সকেটে লেখা :

এই ধাপে, ক্লায়েন্ট সকেট ডেটা সার্ভার সকেটে পাঠানো হয়।

1
socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n");

ধাপ ৫: সার্ভার থেকে Message পড়া

1
2
3
// get server response
$result = socket_read ($socket, 1024) or die("Could not read server response\n");
echo "Reply From Server  :".$result;

Close the socket

1
socket_close($socket);

সব কোড একসাথে :

server.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
// set some variables
$host = "127.0.0.1";
$port = 80;
// don't timeout!
set_time_limit(0);
// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
// bind socket to port
$result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n");
// start listening for connections
$result = socket_listen($socket, 3) or die("Could not set up socket listener\n");
// accept incoming connections
// spawn another socket to handle communication
$spawn = socket_accept($socket) or die("Could not accept incoming connection\n");
// read client input
$input = socket_read($spawn, 1024) or die("Could not read input\n");
// clean up input string
$input = trim($input);
echo "Client Message : ".$input;
// reverse client input and send back
$output = "Hello, You send message: ".$input. "\n";
socket_write($spawn, $output, strlen ($output)) or die("Could not write output\n");
// close sockets
socket_close($spawn);
socket_close($socket);

client.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$host    = "127.0.0.1";
$port    = 80;
$message = "Hello Server, I'm From Bangladesh";
// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
// connect to server
$result = socket_connect($socket, $host, $port) or die("Could not connect to server\n"); 
// send string to server
socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n");
// get server response
$result = socket_read ($socket, 1024) or die("Could not read server response\n");
echo "Reply From Server  :".$result;
// close socket
socket_close($socket);

Have any Question or Comment?

Leave a Reply

Your email address will not be published. Required fields are marked *




Calender

October 2020
M T W T F S S
 1234
567891011
12131415161718
19202122232425
262728293031