PDA

View Full Version : سوال: اسفاده مجدد از پورت گرفته شده، برنامه نویسی سوکت



desatir7316
یک شنبه 25 تیر 1391, 18:08 عصر
سلام دوستان
توی برنامه نویسی سوکت وقتی که پورتی رو اشغال می کنیم باید در انتهای کار با استفاده از دستور socket_close() این پورت رو آزاد کنیم
حالا مشکل اینجاست: وقتی بروزر رو کلا close میکنم یعنی اون ضربدر خوشگل رو که اون گوشه بالاست می زنم دیگه قسمت socket_close کد اجرا نمی شه و پورت هم آزاد نمی میشه
حالا دفعه بعدی که می خوام اجرا کنم برنامه پیغام می ده که از این پورت نمیتونه استفاده کنه
چیکار کنم؟
ممنون

Unique
یک شنبه 25 تیر 1391, 23:49 عصر
چون برنامه های تحت وب به صورت round trip هست شما بایستی باز و بستن پورت را در همون اسکریپت انجام بدی ! میشه بگی داری چیکار میکنی ؟ شاید راه حل چیزه دیگه ای هستش !

desatir7316
دوشنبه 26 تیر 1391, 00:26 صبح
سلام دوست عزیز
ممنون که جواب دادی
هیچی داشتم توی دوتا صفحه با استفاده از برنامه نویسی سوکت اطلاعات ردوبدل می کردم که به این مشکل برخوردم
اگه بتونی کمکم کنی که تحت هر شرایطی پورت رو ببندم مثل اون موردی که اشاره کردم(بستن وب بروزر) خیلی ممنون میشم
ممنون

desatir7316
دوشنبه 26 تیر 1391, 10:30 صبح
راستی دوست عزیز tound trip که گفتی یعنی چی؟

desatir7316
سه شنبه 27 تیر 1391, 19:46 عصر
بالا خره درست شد:
با استفاده از این کد کنترل پورت رو دستم گرفتم و بعدش هم بستمش:

<?php
$fp = fsockopen("127.0.0.1", 26002, $errno, $errstr, 30);

fclose($fp);

?>

اینم لینک راهنما (http://php.net/manual/en/function.fsockopen.php)

Unique
چهارشنبه 28 تیر 1391, 02:23 صبح
راستی دوست عزیز tound trip که گفتی یعنی چی؟
یعنی کاربری درخواست یک صفحه را از web server میکنه ! web server با توجه CGI مربوطه و پردازش اون جواب را بر میگردونه ! Request/Response ! منظورم هم این بود هیچ درخواست persistant یعین همیشگی وجود نداره که شما بتونی با رویدادی متوجه بشی کاربر داره میره ! مثل برنامه های Desktop !


fclose($fp);

اصلا فکر نمیکردم گیر fclose باشی ! وگرنه مثل fopen باید با همون fclose بسته بشه !

desatir7316
چهارشنبه 28 تیر 1391, 10:36 صبح
اصلا فکر نمیکردم گیر fclose باشی ! وگرنه مثل fopen باید با همون fclose بسته بشه !

ممنون
آخه من خود سوکت هام رو با socket_create و ... درست کرده بودم و وقتی مرورگر کلا بسته میشد دیگه نمیتونستم روی اون پورت هیچ کنترلی داشته باشم
البته اصل کار رو fsockopen انجام داد