လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Socket_Accept () + Socket_read (): Client Message စာဖတ်ခြင်းကိုအကောင်အထည်ဖော်ပါ

Socket_Accept () + Socket_read (): Client Message စာဖတ်ခြင်းကိုအကောင်အထည်ဖော်ပါ

M66 2025-05-20

Network Programming အတွက် PHP ကိုအသုံးပြုသောအခါ socket သည် server-client ဆက်သွယ်ရေးကိုအကောင်အထည်ဖော်ရန်အတွက်အရေးကြီးသောယန္တရားတစ်ခုဖြစ်သည်။ Socket_Accept () နှင့် socket_read () သည် client connection များနှင့်စာဖတ်ခြင်းမက်ဆေ့ခ်ျများကိုကိုင်တွယ်ရန်အတွက်အဓိကလုပ်ဆောင်ချက်များဖြစ်သည်။ ဤဆောင်းပါးသည် Client Message ကိုလက်ခံခြင်း၏လုပ်ဆောင်မှုကိုနားလည်ရန်ရိုးရှင်းသော TCP ဆာဗာပရိုဂရမ်တစ်ခုတည်ဆောက်ရန်ဤလုပ်ဆောင်ချက်နှစ်ခုကိုမည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်ရှင်းပြပါမည်။

1 ။ ပြင်ဆင်မှု

ပထမ ဦး စွာ PHP တွင် sockets extension ကိုတပ်ဆင်ထားပါ။ ၎င်းကိုထောက်ပံ့သည်ကိုစစ်ဆေးရန်အောက်ပါ command ကိုအသုံးပြုပါ။

 php -m | grep sockets

မဖွင့်ပါက php.ini ရှိ socket များ = socketets များကို unomment = socketets များကို php.ini ကိုပြန်လည်စတင်နိုင်သည်။

2 ။ TCP Socket Server တစ်ခုဖန်တီးပါ

အောက်တွင်ဖော်ပြထားသည်မှာ client များကပေးပို့သောမက်ဆေ့ခ်ျများကိုလက်ခံရရှိရန် Socket_accept () နှင့် socket_read () socket_read ()) ကို မည်သို့အသုံးပြုရမည်ကိုပြသသည့်နမူနာကုဒ်ဖြစ်သည်။

 <?php

// တည်ဆောက်သည် IP နှင့် ports
$host = '0.0.0.0';
$port = 8080;

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

// သတ်မှတ်ထားသောမှချည်နှောင် IP နှင့် ports
if (!socket_bind($socket, $host, $port)) {
    die("socket_bind() ဆုံးရှုံး: " . socket_strerror(socket_last_error($socket)) . "\n");
}

// ဆက်သွယ်မှုကိုနားထောင်ပါ
if (!socket_listen($socket, 5)) {
    die("socket_listen() ဆုံးရှုံး: " . socket_strerror(socket_last_error($socket)) . "\n");
}

echo "ဆာဗာစတင်ခဲ့သည်,စောင့်ရေှာက် {$host}:{$port}...\n";

// Infinite loop processing client ကိုဆက်သွယ်မှု
while (true) {
    // client ဆက်သွယ်မှုကိုလက်ခံပါ
    $client = socket_accept($socket);
    if ($client === false) {
        echo "socket_accept() ဆုံးရှုံး: " . socket_strerror(socket_last_error($socket)) . "\n";
        continue;
    }

    // client မှမက်ဆေ့ခ်ျများကိုဖတ်ပါ
    $input = socket_read($client, 1024);
    if ($input === false) {
        echo "socket_read() ဆုံးရှုံး: " . socket_strerror(socket_last_error($client)) . "\n";
    } else {
        echo "တစ် ဦး client ကိုမက်ဆေ့ခ်ျကိုလက်ခံရရှိခဲ့သည်: " . trim($input) . "\n";

        // client ကိုအကြောင်းကြားပါ
        $response = "ဆာဗာသည်စာတစ်စောင်လက်ခံရရှိခဲ့သည်: " . $input . "\n";
        socket_write($client, $response, strlen($response));
    }

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

// အဓိကပိတ်ပါ Socket
socket_close($socket);

3 ။ client ကိုဥပမာ (optional)

ဆာဗာကိုစမ်းသပ်ရန် Telnet ကိုသုံးနိုင်သည်သို့မဟုတ်အောက်ပါအတိုင်းရိုးရှင်းသော PHP client ကိုရေးရန်သင်အသုံးပြုနိုင်သည်။

 <?php

$host = 'm66.net';
$port = 8080;

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    die("ဖန်တီး客户端 socket ဆုံးရှုံး: " . socket_strerror(socket_last_error()) . "\n");
}

if (!socket_connect($socket, $host, $port)) {
    die("连接ဆုံးရှုံး: " . socket_strerror(socket_last_error($socket)) . "\n");
}

$message = "မင်္ဂလာပါ,ဆာဗာဘက်!";
socket_write($socket, $message, strlen($message));

$response = socket_read($socket, 1024);
echo "收到ဆာဗာဘက်回应: $response\n";

socket_close($socket);

IV ။ ရှင်းလင်းဖေါ်ပြခြင်း

  • Socket_Accept () - client မှ connection တောင်းဆိုမှုများကိုလက်ခံရန်အသုံးပြုသည်။ client connection မရှိပါကစောင့်ဆိုင်းနေအောင်လုပ်လိုက်ပါ။

  • Socket_read () - client မှအချက်အလက်များကိုဖတ်ရန်အသုံးပြုသည်။ ၎င်းသည်များသောအားဖြင့် 1024 သို့မဟုတ်ထိုထက်မကသော bytes အများဆုံးအရေအတွက်ကိုသတ်မှတ်နိုင်သည်။

  • Socket_write () : အချက်အလက်များကို client သို့ပို့ရန်အသုံးပြုသည်။

5 ။ အကျဉ်းချုပ်

အခြေခံ TCP ဆက်သွယ်ရေးယန္တရားကို Socket_Accept () နှင့် socket_read () ကို သုံး. အကောင်အထည်ဖော်နိုင်သည်။ PHP သည်ကွန်ယက်ပရိုဂရမ်းမင်းကိုအခြေခံသည့်အသုံးအများဆုံးသောဘာသာစကားမဟုတ်သော်လည်း Socket extensions များမှတဆင့်ခိုင်မာသောကွန်ယက်ဆက်သွယ်ရေးစွမ်းရည်ရှိသည်။ ပေါ့ပါးသော 0 န်ဆောင်မှုများ, သတင်းစကားနားထောင်သူများ,

ဤဆောင်းပါးတွင်ဥပမာများဖြင့်ဆာဗာ socket တစ်ခုမည်သို့ဖန်တီးရမည်, client connection များကိုလက်ခံခြင်း, 0 န်ဆောင်မှုခံယူသူများကိုလက်ခံခြင်း, သင့်လျော်သောအမှားကိုင်တွယ်မှုနှင့်တစ်ပြိုင်နက်တည်းဒီဇိုင်းကိုပေါင်းစပ်ပြီးပိုမိုရှုပ်ထွေးသောဆက်သွယ်ရေးစနစ်ကိုထပ်မံတည်ဆောက်နိုင်သည်။