eensanimehr

اجرای یک کد ساده ی php در مدل client-server روی هاست

eensanimehr ۱۳۹۶/۰۹/۰۷ هاست و دامین

سلام من امتحان یک مثال کلاینت - سرور روی فضای اینترنت به مشکل خوردم. مساله ساده اینه که کلاینت یک پیام hello به سرور می فرسته و سرور اونو چاپ می کنه من این مثالو از سایت خود php برداشتم و کلی کار دیگه برای توسعه باید روش انجام بشه. این مثال به درستی روی wammp اجرا میشه و مشکلی نیست. من می خوام این دو اسکریپتو آنلاین کنم و روی فضای واقعی آنلاین اجرا کنم. قرار دادن این دو کد روی هاست اختصاصی و اجرای اونا مثل wammp جواب نمیده. در فیلد host کد مقدار ip اصلی سرورو قرار دادم نمی دونم درسته یا نه؟ به نظر ایراد از اینجاس $result = socket_bind($socket, 0, $port) or die("Could not bind to socket\n"); تابع bind نمیتونه اون آدرس آی پی رو به این اسکریپت سرور اختصاص بده که بعد من بتونم با کد کلاینت به اون وصل بشم. به عبارت واضح تر چطور می شه یک کد php server ساده داشت که یک آی پی به ما بده تا بتونیم به اون وصل بشیم. باز کردن سوکت ها درست است فقط این قسمت bind ایراد دارد.
پاسخ‌ها به این تاپیک
eensanimehr
eensanimehr
۱۳۹۶/۰۹/۰۸
این لینک سوالمه که تو خود استک هم پرسیدم https://stackoverflow.com/questions/47532151/php-client-server-on-web-host-cant-bind?noredirect=1#comment82031482_47532151
eensanimehr
eensanimehr
۱۳۹۶/۰۹/۰۸
من این پورت و ip را از خود آدرس دامنه برداشتم نمی دونم این کار درسته یا نه. چیزی که نیاز دارم یک آدرس آیپی و پورت باز هست که بتونم روش یه php سرور بالا بیارم یا به عبارت دیگر روی اون آدرس و پورت یه سوکت سرور بسازم که تا حالا نشده

در پاسخ به

stack programer
stack programer
۱۳۹۶/۰۹/۰۸
آدرس ای پی همان ادرس سروری که روی آن هاست شما است، بعد معمولا روی لینوکس selinux به خاطر مسایل امنیتی یک سری پورت را اجازه باز کردن و بایند کردن نمی دهد، پورت های زیر 1024 باید روت باشی، جدیدا پورتهای بالاهم اجازه استفاده نداری این مربوط به کانفیک سرور است، باید به سراغ vps ها بروید.


Warning: socket_bind(): unable to bind address [98]: Address already in use in /home/stackpro/public_html/index.php on line 22
Could not bind to socket

در پاسخ به

eensanimehr
eensanimehr
۱۳۹۶/۰۹/۰۹
حدس می زدم آخرش باید یه سرویس اختصاصی بگیرم. الان vps یه آی پی اختصاصی و چند تا پورت به من میده . قطعا می تونم روی اون تابع bind صدا کنم و کارو پیش ببرم؟ از کجا تهیه کنم؟ از خود شرکت بپرسم سر در میاره که این vps راه حل مشکل منه؟ سرویس رایگان وجود نداره برای این کار من یه روز مثلا تست کنم اگه درست کار کرد برم بخرم؟

در پاسخ به

stack programer
stack programer
۱۳۹۶/۰۹/۰۹
سلام vps رایگان من ندیدم، سعی کن ارزان ترین بخری ماهانه 17 الی 20 است، ولی تو در وی پی اس ادمین لینوکس مجازی هستی، مشکل شما ای پی نیست، پورت سرور است.قاعدتا کانفیگش دست خودته هرکاری باید بتونی انجام بدی

در پاسخ به

eensanimehr
eensanimehr
۱۳۹۶/۰۹/۰۸
من نمی دونم که مقادیر ip و پورت صحیحی که کار کند را چطور وارد کنم.

در پاسخ به

stack programer
stack programer
۱۳۹۶/۰۹/۰۸
سلام باید کد بزاری، اررها هم کامل تر بگذاری مکننه مشکل رییوز باشه که به لینک زیر برو https://stackoverflow.com/questions/8667330/error-could-not-bind-to-socket-in-php-programming باید اپشن زیر را به کدت اضافه کنی


 if (!socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1)) {
    echo socket_strerror(socket_last_error($socket));
    exit;
} 

اگرنه با اضافه کردن اپشن لینک زیر مشکلت را دقیقتر پیدا کن http://www.php.net/manual/en/function.socket-set-option.php