လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Basic PHP TCP server တစ်ခုဖန်တီးရန် Socket_Accept () ကိုသုံးပါ

Basic PHP TCP server တစ်ခုဖန်တီးရန် Socket_Accept () ကိုသုံးပါ

M66 2025-05-23

Network programming တွင် PHP သည် web applications များကိုတီထွင်ရန်သာမက TCP ဆာဗာကဲ့သို့သောအဆင့်နိမ့်ကွန်ယက်ဆက်သွယ်ရေးအစီအစဉ်များကိုဖန်တီးရန်လည်းအသုံးပြုနိုင်သည်။ company connections များကိုလက်ခံရန် Socket_Accept () သည် PHP ရှိအရေးကြီးသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ဤဆောင်းပါးသည်သင့်အားရိုးရှင်းသော TCP server ကိုတစ်ဆင့်ပြီးတစ်ဆင့်တည်ဆောက်ရန်နှင့်အဓိကအချက်များကိုရှင်းပြပါ။

1 ။ Socket_Accept ကဘာလဲ။

Socket_Accept () သည် socket တွင် connection socket တွင်ဆက်သွယ်မှုတောင်းဆိုမှုများကိုလက်ခံရရှိရန်ဆာဗာပေါ်ရှိ PHP Socket extension တွင် function တစ်ခုဖြစ်သည်။ Client သည် connection တစ်ခုတောင်းဆိုခြင်းသည် connection တစ်ခုအတွက်တောင်းဆိုခြင်းသည်အဓိကနားထောင်နေသော socket ထက် client နှင့်ဆက်သွယ်ရန်အသုံးပြုသော socient_Accept () သည် client နှင့်ဆက်သွယ်ရန်အတွက် socket letance အသစ်တစ်ခုကိုပြန်ပို့သည်။

2 ။ TCP ဆာဗာတစ်ခုကိုဖန်တီးရန်အဆင့်များ

အဆင့် 1: socket တစ်ခုဖန်တီးပါ

 $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    die("socket_create() ဆုံးရှုံး: " . socket_strerror(socket_last_error()) . "\n");
}

ဤကုဒ်နံပါတ်သည် IPv4 ( AF_AT4 ) ၏ TCP Socket ( Sock_Stream ) ကိုဖန်တီးသည်။ Protocol type သည် TCP ( Sol_tcp ) ဖြစ်သည်။

အဆင့် 2: လိပ်စာနှင့်ဆိပ်ကမ်းကိုချည်နှောင်ပါ

 if (!socket_bind($socket, '0.0.0.0', 12345)) {
    die("socket_bind() ဆုံးရှုံး: " . socket_strerror(socket_last_error($socket)) . "\n");
}

ဤအဆင့်သည် 12345 ကဲ့သို့သောဒေသဆိုင်ရာ IP နှင့်ဆိပ်ကမ်းသို့ Socket ကိုချည်ထားသည်။

အဆင့် 3: ဆက်သွယ်မှုကိုနားထောင်ပါ

 if (!socket_listen($socket, 5)) {
    die("socket_listen() ဆုံးရှုံး: " . socket_strerror(socket_last_error($socket)) . "\n");
}

အဝင်ဆက်သွယ်မှုများကိုစတင်နားထောင်ပါ။ 5 သည် အများဆုံးခွင့်ပြုထားသောစောင့်ဆိုင်းထားသောဆက်သွယ်မှုတန်းစီအရှည်ကိုညွှန်ပြသည်။

အဆင့် 4: ဆက်သွယ်မှုကိုလက်ခံပြီးတောင်းဆိုမှုကိုလုပ်ပါ

 while (true) {
    echo "client connection ကိုစောင့်ဆိုင်း...\n";
    $clientSocket = socket_accept($socket);
    if ($clientSocket === false) {
        echo "socket_accept() ဆုံးရှုံး: " . socket_strerror(socket_last_error($socket)) . "\n";
        continue;
    }

    $welcomeMsg = "မှကြိုဆိုပါသည် m66.net ၏ PHP TCP ဆာဆာ!\n";
    socket_write($clientSocket, $welcomeMsg, strlen($welcomeMsg));

    // client ကိုသတင်းအချက်အလက်များကိုဖတ်ပါ
    $input = socket_read($clientSocket, 1024);
    echo "တစ် ဦး client ကိုမက်ဆေ့ခ်ျကိုလက်ခံရရှိခဲ့သည်: " . $input;

    // client ကိုတုံ့ပြန်
    $response = "မင်းဒါကိုပို့လိုက်တယ်: " . trim($input) . "\n";
    socket_write($clientSocket, $response, strlen($response));

    // Client Convice Connection
    socket_close($clientSocket);
}

အထက်ပါကုဒ်တွင် client သည် client ကိုချိတ်ဆက်ရန်အတိုင်းသက်ဆိုင်လိမ့်မည်။ ဆက်သွယ်မှုကိုစတင်တည်ထောင်ပြီးသည်နှင့် 0 န်ဆောင်မှုပေးသည့်မက်ဆေ့ခ်ျကိုပေးပို့ပြီး client input ကိုဖတ်ပါ, ၎င်းသည်ပြန်လာသည်။

အဆင့် 5. အဓိက socket ကိုပိတ်ပါ

အထက်ဖော်ပြပါကုဒ်သည်အဆုံးမဲ့ကွင်းဆက်ဆာဗာတစ်ခုဖြစ်သော်လည်းအမှန်တကယ်အသုံးပြုမှုတွင် interfression ယန္တရားသို့မဟုတ် signal processing ကိုထည့်သွင်းသင့်သည်။ ဆာဗာကိုပိတ်ရန်ကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -

 socket_close($socket);

3 ။ client connection test

ဤ TCP ဆာဗာကိုစမ်းသပ်ရန် Telnet ကို သုံးနိုင်သည်။

 telnet m66.net 12345

ဆက်သွယ်မှုအောင်မြင်ပါကဆာဗာမှပြန်လာသောကြိုဆိုသောသတင်းစကားကိုသင်တွေ့လိမ့်မည်။

4 ။ မှတ်စုများ

  • PHP ၏ Socket extension ကိုပုံမှန်အားဖြင့်ဖွင့်ထားခြင်းမရှိပါ။ Php.ini တွင် Socket များကို ဖွင့်ထားပါ။

  • script ကို run ဖို့ command line ကိုသုံးပါ။ Web ပတ်ဝန်းကျင်သည်ထိုကဲ့သို့သောကြာရှည်စွာချိတ်ဆက်ထားသော 0 န်ဆောင်မှုများကိုလုပ်ကိုင်ရန်မသင့်တော်ပါ။

  • အမှန်တကယ်ဖြန့်ကျက်နေစဉ်အတွင်းခြွင်းချက်ကိုင်တွယ်ခြင်း, သစ်ထုတ်လုပ်ခြင်းနှင့် Multi-processing processing processing processing processing ကဲ့သို့သောလုပ်ဆောင်ချက်များကိုထည့်သွင်းသင့်သည်။

ကောက်ချက်

ဤဆောင်းပါးမှ PHP Socket_Acception () function ကို အသုံးပြု. ရိုးရှင်းသော TCP server တစ်ခုကိုမည်သို့ဖန်တီးရမည်ကိုသင်လေ့လာသင်ယူခဲ့သည်။ PHP သည် 0 န်ဆောင်မှုများအတွက်နှစ်သက်သောဘာသာစကားမဟုတ်သော်လည်း၎င်းသည်အခြေခံလိုအပ်ချက်များနှင့်ကိုက်ညီရန်လိုအပ်သောကိရိယာများကိုလည်းထောက်ပံ့ပေးသည်။ ဤဆာဗာဥပမာသည် PHP ၏အားကောင်းသောပြောင်းလွယ်ပြင်လွယ်မှုကိုပြသသည်။