• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل با fsockopen
#1
سلام به دوستای خوبم

من البته با تابع fsockopen هیچ مشکلی ندارم خودشم میدونه Big Grin

کد:
<pre>
<?php
$fp = fsockopen("127.0.0.1", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "GET / HTTP/1.1\r\n";
    $out .= "Host: 127.0.0.1\r\n";
    $out .= "Connection: Close\r\n\r\n";

    fwrite($fp, $out);
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
?>
بذار من یه توضیح در مورد سطرهایی که بلد هستم بدم شاید بعدا سوال خیلی ها از تازه واردها باشه و کمک بشه بهشون
با تابع fsockopen یه اتصال به آدرس و پورت مورد نظر ایجاد کردیم و با دستور if درستیشو بررسی کردیم تا اینجاشو بلدم Big Grin چند خط آخر هم بلدم Big Grin با تابع fwrite امده عمل نوشتن رو انجام داده و با تابع feof چک میکنیم ببینیم به آخر فایل رسیدیم یا نه اگه نرسیدیم با دستور while میایم خط به خط فایل رو میگیریم و میریزیم تو متغیر $fp و با تابع fgets میایم 128 بایت از فایل رو میخونیم . بعدشم فایل رو میبنده . خدا کنه درست بوده باشه توضیحاتم.

اما سوال من اینجاست که echo دقیقا چیرو میخواد چاپ کنه
کد:
echo "$errstr ($errno)<br />\n";
و $out که اصلا از قبل تعریفشم نکردیم و 3 بار هم مقدار دهی شده چه نقشی در اینجا داره سوم اینکه تابع fwrite باید یه آرگومنت میگرفت که اونم $fp بود اما آرگومنت دوم $out هم بهش اختصاص داده شده .

پیشاپیش متشکرم Heart
  پاسخ
تشکر شده توسط :
#2
نقل قول:اما سوال من اینجاست که echo دقیقا چیرو میخواد چاپ کنه
اگه خطایی رخ بده متن خطا و کد خطا رو چاپ میکنه ! اینجا هم مقدار دهی میشه :
کد:
$fp = fsockopen("127.0.0.1", 80, $errno, $errstr, 30);
نقل قول:و $out که اصلا از قبل تعریفشم نکردیم و 3 بار هم مقدار دهی شده ...
تابع fwrite پارامتر دومش همون متنیه که قراره توی فایل چاپ بشه !
پارامتر اول handel فایلی هست که قراره توش بنویسیم .

اگه سوالی داری در خدمتیم Heart
  پاسخ
تشکر شده توسط : Padideh
#3
آرگومنت های $errno و E$errstr همیشه به صورت دیفالت هستن ؟ یعنی همیشه به این صورت هستن ؟

من چند تا اسکریپت دیدم که به همین صورت بود
کد:
$fp = fsockopen("127.0.0.1", 80, $errno, $errstr, 30);

در مورد این عملگر ! هم یه توضیح کوچیک بدی ممنون میشم

کد:
!feof

شرط دوم همون else رو یه جوره دیگه میشه تعریف میکرد ؟ یه خورده انگار گنگ هستش برام

این کد هم بی زحمت یه تست بزنین ببینین چرا خروجی نمیده
کد:
<?php
$fp=fsockopen("udp://127.0.0.1",13,$errno,$errstr);
if (!ftp) {
    echo "Error : $errno - $errstr <br />\n";
}else {
    fwrite($fp,"\n");
    echo fread($fp,26);
    fclose($fp);
}

خرجی باید زمان و تاریخ باشه
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان