نمایش نتایج 1 تا 5 از 5

نام تاپیک: افزایش سرعت برای پورت اسکنینگ

  1. #1

    افزایش سرعت برای پورت اسکنینگ

    کد زیر را در نظر بگیرید


    <?php

    function checkPort($host, $port, $timeout)
    {
    $socket = @fsockopen($host, $port, $errorNumber, $errorString, $timeout);

    if ($socket) {
    echo "The".$port."is open<p>";
    }

    @fclose($socket);
    }

    for ($i=70;$i<=90;$i++){
    checkPort("localhost",$i,1);
    }

    ?>


    اگر timeout را یک قرار دهم برای چک کردن هر پورت یک ثانیه زمان میخواهد
    بنابراین استفاده از این روش برای پورت اسکنینگ مناسب نیست
    الگوریتم سریع تری برای این منظور سراغ دارید؟
    حداقل زمانی که می توانم در timeout ست کنم تا نتایج قابل قبول بگیرم چیست؟
    Artists use lies to tell the truth while politicians use them to cover the truth up

  2. #2
    . آواتار oxygenws
    تاریخ عضویت
    دی 1382
    محل زندگی
    تهران/مشهد
    پست
    6,333
    برای چک کردن هر پورت یک ثانیه زمان میخواهد
    بهتره بگیم که برای چک کردن هر پورت ماکزیمم یک ثانیه زمان می بره. (البته معمولا اکثر پورت ها بسته اند) و تا اونجایی که من می دونم چاره ای نیست، یعنی زمانی کمتر از این نمی شه داد.
    البته نوع این timeout اینجوری که دیدم float می باشد، پس بد نیست خودت یک عدد اعشاری کوچک رو تست کنی، اما ممکنه نتایج درستی برنگردونه (یعنی پورتی باز رو بگه بسته است)
    در همین مورد بد نیست سری به لینک زیر هم بزنی:
    http://www.php.net/manual/en/functio...et-timeout.php

    الگوریتم سریع تری برای این منظور سراغ دارید؟
    باید این کار رو موازی انجام بدی و از توابع زیر استفاده کنی:
    http://www.php.net/manual/en/ref.pcntl.php

    یا اینکه مستقیما از سوکت ها استفاده کنی که در این حالت حدس می زنم سرعت برنامه (منظورم اون یک ثانیه نیست ها) کمی زیاد تر بشه.

    اگر هم دسترسی شل روی لینوکس دارید، می تونید از command لینوکس استفاده کنید.

    توضیح اضافی: ان شا الله به زودی thread ها هم به سادگی جاوا و ... در PHP پشتیبانی خواهند شد و دیگه این مشکلات رو نخواهیم داشت.

    موفق باشید، امید
    ایمیل من
    سایت من

    عضویت در جامعه‌ی اهدای عضو

    Direct PGP key: http://tinyurl.com/66q5cy
    PGP key server: keyserver.ubuntu.com
    PGP name to search: omidmottaghi

  3. #3
    بهتره بگیم که برای چک کردن هر پورت ماکزیمم یک ثانیه زمان می بره.
    چاره ای نیست، یعنی زمانی کمتر از این نمی شه داد.
    منظورم همینه.حساب کن برای چک کردن مثلا 100 پورت چقدر زمان می بره!!!با توجه به اینکه شاید 10 تا بیشتر باز نباشه

    اینکه مستقیما از سوکت ها استفاده کنی
    الان همین کار رو دارم می کنم دیگه (درسته؟)

    گر هم دسترسی شل روی لینوکس دارید، می تونید از command لینوکس استفاده کنید.
    سرور اختصاصی نیست که بتونم روش نرم افزار نصب کنم (سرور خودته :mrgreen: )
    آیا فرمان خاصی برای این کار هست؟

    باید این کار رو موازی انجام بدی
    امتحان می کنم
    Artists use lies to tell the truth while politicians use them to cover the truth up

  4. #4
    . آواتار oxygenws
    تاریخ عضویت
    دی 1382
    محل زندگی
    تهران/مشهد
    پست
    6,333
    الان همین کار رو دارم می کنم دیگه (درسته؟)
    درسته از سوکت استفاده می کنی، اما مستقیم نیست!!
    منظورم از سری توابع سوکت که معمولا توشون کلمه socket رو هم دارند.

    سرور اختصاصی نیست که بتونم روش نرم افزار نصب کنم (سرور خودته آقای سبز )
    آیا فرمان خاصی برای این کار هست؟
    خوب اگه دسترسی نداری پس بی خیال.
    دستور خاصی هم نیست، ولی برنامه ای هست که تو اکثر لینوکس ها نصبه، به نام nmap

    امتحان می کنم
    رو سرور من pcntl نصب نیست، پس بی خیال!!! :)

    چاکریم.
    ایمیل من
    سایت من

    عضویت در جامعه‌ی اهدای عضو

    Direct PGP key: http://tinyurl.com/66q5cy
    PGP key server: keyserver.ubuntu.com
    PGP name to search: omidmottaghi

  5. #5
    سلام

    میتونم بپرسم اصلا برای چی میخوای یک سری پورت را چک کنی ببینی که باز هستند یا نه؟ می دونم سوالم کمی پچه گونست، ولی خب چیکار کنم، نمیدونم! آخه معمولا من فقط وقتی با سوکتها کار میکنم که مثلا یک سایتی گفته به این وسیله میتونی ازم اطلاعات بکشی، یا مثلا حتی بخوام صفحات سایت را با پورت ۸۰ بخونم. چه کارهای دیگه ای میشه باهاش کرد؟

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •