PDA

توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : برنامه نویسی سوکت (Socket) با PHP



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);





?>