လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> [client_export_stream မှတစ်ဆင့် client_export_stream မှနှစ်လမ်းသွားဆက်သွယ်ရေးယန္တရားကိုအကောင်အထည်ဖော်ရန်မည်သို့အကောင်အထည်ဖော်ရမည်နည်း။

[client_export_stream မှတစ်ဆင့် client_export_stream မှနှစ်လမ်းသွားဆက်သွယ်ရေးယန္တရားကိုအကောင်အထည်ဖော်ရန်မည်သို့အကောင်အထည်ဖော်ရမည်နည်း။

M66 2025-06-22

PHP Network Programming တွင် Socket_ * စီးရီးလုပ်ဆောင်ချက်များသည် developer များကိုအခြေခံကွန်ယက်ဆက်သွယ်ရေးစွမ်းရည်များနှင့်အတူ developer များကိုပေးသည်။ stream_socket_ * series function များကိုပိုမိုအဆင့်မြင့်ပြီးအသုံးပြုရန်လွယ်ကူသော်လည်းအချို့သောအခြေအနေများတွင်ထိန်းချုပ်နိုင်သောလိုအပ်ချက်များပိုမိုများပြားသည် ဤဆောင်းပါးသည် socket_export_stream မှတဆင့် socket_export_stream မှတဆင့် socket_export_stream မှတဆင့် client_export_stream သို့ပြောင်းလဲရန်နှင့် client နှင့် server အကြားနှစ်လမ်းသွားဆက်သွယ်ရေးယန္တရားကိုသိရှိနိုင်သည်။

Socket_export_Stream ဆိုတာဘာလဲ။

Socket Data () နှင့် fwite () fwe () () fword () () () ( ) () () () fwice () () () () () () () () () () () fwice () ကို သုံးရန်အတွက် Socket_export အရင်းအမြစ်များကို stream အရင်းအမြစ်များအဖြစ်တင်ပို့ရန် Socket_export_Stream ဖြစ်သည်။ ဤချဉ်းကပ်မှုသည် API ကိုအသုံးပြုခြင်းလွယ်ကူခြင်းနှင့်အတူအခြေခံ socket ၏ပြောင်းလွယ်ပြင်လွယ်ကိုပေါင်းစပ်ထားသည်။

 stream socket_export_stream(Socket $socket): resource|false

fopen , stream_select ကဲ့သို့သောလုပ်ဆောင်မှုများနှင့် တွဲဖက် . အလုပ်လုပ်ရန်အသုံးပြုနိုင်သည့်အမျိုးအစား စီး ၏အရင်းအမြစ်တစ်ခုသို့ပြန်သွားသည်။


1 ။ ဆာဗာ socket တစ်ခုဖန်တီးပါ

Socket_create () မှတဆင့် TCP Socket ကိုဖန်တီးပြီး၎င်းကိုဒေသခံလိပ်စာနှင့်ဆိပ်ကမ်းသို့ချိတ်ထားသည်။

 $serverSocket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($serverSocket, '0.0.0.0', 9501);
socket_listen($serverSocket);
echo "ဆာဗာစတင်သည်,ဆိပ်ကမ်းကိုနားထောင်ပါ 9501...\n";

2 ။ connection ကိုလက်ခံပြီး၎င်းကိုလွှင့်ပစ်ပါ

ဆာဗာသည် client connection တောင်းဆိုမှုများတောင်းဆိုမှုများကိုပိတ်ပင်ထားပြီး connections connection အရင်းအမြစ်များကိုစာဖတ်နိုင်သည့်အရာများသို့တင်ပို့သည်။

 while (true) {
    $clientSocket = socket_accept($serverSocket);
    if ($clientSocket === false) {
        echo "ဆက်သွယ်မှုကိုလက်ခံရန်ပျက်ကွက်ခဲ့သည်\n";
        continue;
    }

    $clientStream = socket_export_stream($clientSocket);
    if ($clientStream === false) {
        echo "ထုတ်ကုန် stream ဆုံးရှုံး\n";
        socket_close($clientSocket);
        continue;
    }

    fwrite($clientStream, "မှကြိုဆိုပါသည် m66.net ဆာဆာ\n");
    
    while (!feof($clientStream)) {
        $data = fgets($clientStream);
        if ($data === false) break;
        echo "ဖောက်သည်ကပြောပါတယ်: $data";
        fwrite($clientStream, "မင်းပြောတာက:$data");
    }

    fclose($clientStream);
    socket_close($clientSocket);
}

3 ။ ဆာဗာသို့ client convery ဆက်သွယ်မှု

0 န်ဆောင်မှုခံယူသူသည် society server သို့ချိတ်ဆက်ရန် Socket_create_stream ကို အသုံးပြု. ဒေတာများကိုဖတ်ရန်နှင့်ရေးရန် socket_export_stream ကို အသုံးပြုသည်။

 $client = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($client, 'm66.net', 9501);

$stream = socket_export_stream($client);
if ($stream === false) {
    echo "ထုတ်ကုန် stream ဆုံးရှုံး\n";
    exit(1);
}

echo fgets($stream); // ကြိုဆိုပါတယ်မက်ဆေ့ခ်ျကိုလက်ခံရရှိသည်

fwrite($stream, "မင်္ဂလာပါ,ဆာဆာ!\n");
echo fgets($stream); // ECHO ကိုဖတ်ပါ

fclose($stream);
socket_close($client);

အားသာချက်များနှင့်ကြိုတင်ကာကွယ်မှုများ

ကောင်းကျိုး

  • Code ကို code : The Stream Interface သည် Socket Data Data ၏ဖတ်ရန်နှင့်ရေးရန်ဖြစ်စဉ်ကိုရိုးရှင်းလွယ်ကူစေသည်။

  • မြင့်မားစွာလိုက်ဖက်ခြင်း - ၎င်းသည် stream_seen_set_set_blockingသည့် လုပ်ဆောင်ချက်များကို အသုံးပြု. အသုံးပြုနိုင်သည်။

  • Bidirectional ဆက်သွယ်ရေးဆိုသည်မှာသဘာဝနှင့်ချောမွေ့သည် - ကွင်းဆက်စာဖတ်ခြင်းနှင့်ရေးသားခြင်းဖြင့်အချိန်မှန်တုံ့ပြန်မှုကိုရနိုင်သည်။

မှတ်သားရန်အရာ

  • Socket_Export_stream ကို ချိတ်ဆက်ထားသော sockets များအတွက်သာအသုံးပြုနိုင်သည်။

  • အသုံးပြုပြီးနောက်အရင်းအမြစ်ယိုစိမ့်မှုကိုကာကွယ်ရန်မြစ်ချောင်းများနှင့် socket ကိုပိတ်ရန်လိုအပ်သည်။

  • ကွန်ယက်ဆက်သွယ်ရေးသည်ပိတ်ဆို့ခြင်းသို့မဟုတ်ပိတ်ဆို့ခြင်းကိုရှောင်ရှားရန်ခြွင်းချက်ကိုင်တွယ်ခြင်းနှင့်အချိန်ကုန်ထိန်းချုပ်မှုကိုစဉ်းစားသင့်သည်။