Borna66
04-30-2012, 11:54 PM
ال شده در اسفند ۲۳, ۱۳۹۰ (http://www.phpdevelopers.ir/%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%db%8c-%d8%b3%d9%88%da%a9%d8%aa-socket-%d8%a8%d8%a7-php/) توسط Code::Blocks (http://www.phpdevelopers.ir/author/code-blocks/) http://pnu-club.com/imported/mising.jpgاگه شما برای مدتی با پی اچ پی کار کرده باشید،احتمالا با دو مفهوم آشنای وب پیچ و وب سرور مواجه شده اید.در حالیکه این غریب نیست پی اچ پی با وجود اینکه یک زیان اسکریپتی برای تولید صفحات پویا می باشد ولی نمی توان از قدرت افزونش چشم پوشی کرد،چنانچه شما در این مقاله خواهید دید که می توانید کارهای بیشتری غیر از فقط متصل شدن به دیتابیس و خواندن و نوشتن رکوردهایش در یک قالب اچ تی ام ال کنید.
یکی از بهترین اسرارهای محافظت شده پی اچ پی که من به طور کاملا تصادفی فهمیدم،مجموعه بسیار جامع از توابع برنامه نویسی شبکه است،در حال حاضر API های پروگرمینگِ سوکت، تقریبا به طور کامل تمامی نیازهای شما را برای ارتباطات مبتنی بر سوکت و سرور کلاینت که بر روی پروتکل TCP/IP است را پشتیبانی میکند و میتوان به سرعت برنامه های کلاینت سروری ساده با پی اچ پی ساخت.
در طی این مقاله،من یک نگاه نزدیکتر به توابع بسیار مهم در این API با استفاده از کدها و توضیحات قرار داده شده در داخلشان خواهم داشت.در طی این مقاله نیز من چند برنامه ی کلاینت سروری ساده میسازم و به بدین وسیله کارایی پی اچ پی را به عنوان یک ابزار توسعه و گسترش سریع برای برنامه های مبتنی بر شبکه به صورت عملی نشان خواهم داد.
باید در ابتدا ذکر کنم که این مقاله مقدماتی بوده و در درجه اول برای توسعه دهندگان وب که علاقه مند به گسترش دانش پی اچ پی خود در محدوده برنامه نویسی شبکه هستند میباشد.
پی اچ پی یک مجموعه نسبتا جامعی از توابع برای ایجاد و دستکاری ارتباطات سوکتی به همراه دارد.با این وجود این قابلیت به طور پیش فرض فعال نیس در نتیجه لازم است پارامتر “–enable-sockets” را فعال کنید.
خب بهتره با یه مثال ساده شروع کنیم که TCPسرور یک رشته را به عنوان ورودی میگیرد و آنرا معکوس کرده و به کلاینت بر میگرداند:
<?
// متغییر هایی دلخواه و مورد نیاز تعریف میکنیم
$host = "192.168.1.99";
$port = 1234;
// timeout نداریم!
set_time_limit(0);
// یک سوکت میسازیم
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create
socket\n");
// الحاق سوکت به پورت
$result = socket_bind($socket, $host, $port) or die("Could not bind to
socket\n");
// شروع انتظار برای ارتباط
$result = socket_listen($socket, 3) or die("Could not set up socket
listener\n");
// پذیرفتن ارتباط ورودی
// spawn کردن سوکت برای مدیریت ارتباط
$spawn = socket_accept($socket) or die("Could not accept incoming
connection\n");
// خواندن ورودی کلاینت
$input = socket_read($spawn, 1024) or die("Could not read input\n");
// پاک سازی ورودی
$input = trim($input);
// معکوس کردن ورودی کلاینت و باز پس فرستادن
$output = strrev($input) . "\n";
socket_write($spawn, $output, strlen ($output)) or die("Could not write
output\n");
// بستن سوکت
socket_close($spawn);
socket_close($socket);
?>
یکی از بهترین اسرارهای محافظت شده پی اچ پی که من به طور کاملا تصادفی فهمیدم،مجموعه بسیار جامع از توابع برنامه نویسی شبکه است،در حال حاضر API های پروگرمینگِ سوکت، تقریبا به طور کامل تمامی نیازهای شما را برای ارتباطات مبتنی بر سوکت و سرور کلاینت که بر روی پروتکل TCP/IP است را پشتیبانی میکند و میتوان به سرعت برنامه های کلاینت سروری ساده با پی اچ پی ساخت.
در طی این مقاله،من یک نگاه نزدیکتر به توابع بسیار مهم در این API با استفاده از کدها و توضیحات قرار داده شده در داخلشان خواهم داشت.در طی این مقاله نیز من چند برنامه ی کلاینت سروری ساده میسازم و به بدین وسیله کارایی پی اچ پی را به عنوان یک ابزار توسعه و گسترش سریع برای برنامه های مبتنی بر شبکه به صورت عملی نشان خواهم داد.
باید در ابتدا ذکر کنم که این مقاله مقدماتی بوده و در درجه اول برای توسعه دهندگان وب که علاقه مند به گسترش دانش پی اچ پی خود در محدوده برنامه نویسی شبکه هستند میباشد.
پی اچ پی یک مجموعه نسبتا جامعی از توابع برای ایجاد و دستکاری ارتباطات سوکتی به همراه دارد.با این وجود این قابلیت به طور پیش فرض فعال نیس در نتیجه لازم است پارامتر “–enable-sockets” را فعال کنید.
خب بهتره با یه مثال ساده شروع کنیم که TCPسرور یک رشته را به عنوان ورودی میگیرد و آنرا معکوس کرده و به کلاینت بر میگرداند:
<?
// متغییر هایی دلخواه و مورد نیاز تعریف میکنیم
$host = "192.168.1.99";
$port = 1234;
// timeout نداریم!
set_time_limit(0);
// یک سوکت میسازیم
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create
socket\n");
// الحاق سوکت به پورت
$result = socket_bind($socket, $host, $port) or die("Could not bind to
socket\n");
// شروع انتظار برای ارتباط
$result = socket_listen($socket, 3) or die("Could not set up socket
listener\n");
// پذیرفتن ارتباط ورودی
// spawn کردن سوکت برای مدیریت ارتباط
$spawn = socket_accept($socket) or die("Could not accept incoming
connection\n");
// خواندن ورودی کلاینت
$input = socket_read($spawn, 1024) or die("Could not read input\n");
// پاک سازی ورودی
$input = trim($input);
// معکوس کردن ورودی کلاینت و باز پس فرستادن
$output = strrev($input) . "\n";
socket_write($spawn, $output, strlen ($output)) or die("Could not write
output\n");
// بستن سوکت
socket_close($spawn);
socket_close($socket);
?>