လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> intranet ဆက်သွယ်ရေး 0 န်ဆောင်မှုများကိုတည်ဆောက်ရန် Socket_Accept () ကိုသုံးပါ

intranet ဆက်သွယ်ရေး 0 န်ဆောင်မှုများကိုတည်ဆောက်ရန် Socket_Accept () ကိုသုံးပါ

M66 2025-06-02

PHP, Socket_Accept () တွင် client connection များကိုလက်ခံရန်အသုံးပြုသော function တစ်ခုဖြစ်ပြီး Socket-based network compacen ည့်သည်များတွင်အသုံးပြုလေ့ရှိသည်။ ဤဆောင်းပါးသည် Socient_Accept ကိုအသုံးပြုရမည် () သည် အခြေခံဖြင့် intranet ဆက်သွယ်ရေး 0 န်ဆောင်မှုကိုနားလည်ရန်အတွက်ရိုးရှင်းသော intranet ဆက်သွယ်ရေး 0 န်ဆောင်မှုကိုတည်ဆောက်ရန်အခြား socket functions များနှင့်ပေါင်းစပ်ရမည်။

1 ။ Socket_Accept ကဘာလဲ။

Socket_accept () socket connection တောင်းဆိုမှုကိုလက်ခံရန်အသုံးပြုသည်။ ၎င်းသည် client connection အတွက် server ဆက်သွယ်မှုအတွက် server ဆက်သွယ်မှုအတွက် server ဆက်သွယ်မှုကိုနားထောင်ပြီးနောက်၎င်းသည် client connection အသစ်ကို 0 င်ရောက်ပြီး client convice connection ကိုလက်ခံရန်ဤလုပ်ဆောင်မှုကိုလက်ခံလေ့ရှိသည်။

2 ။ intranet ဆက်သွယ်ရေးဝန်ဆောင်မှုဥပမာ

အောက်ဖော်ပြပါနမူနာကုဒ်သည် Socket_Accept ကို အသုံးပြုရမည်,

 <?php
// ဖန်တီးTCP Socket
$server = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!$server) {
    die("无法ဖန်တီးsocket: " . socket_strerror(socket_last_error()) . "\n");
}

// ချည်နေှာင်IPနှင့် ports,အများအားဖြင့် intranet အတွက်အသုံးပြုခဲ့သည်IPနမူနာ:192.168.1.100,သငေ်္ဘာဆိပ်ကမ်း9000
$bindResult = socket_bind($server, '192.168.1.100', 9000);
if (!$bindResult) {
    die("无法ချည်နေှာင်socket: " . socket_strerror(socket_last_error($server)) . "\n");
}

// စောင့်ကြည့်လေ့လာရေးစတင်ပါ,စောင့်ဆိုင်းဆက်သွယ်မှုအများဆုံးအရေအတွက်ကဖြစ်ပါတယ်5
socket_listen($server, 5);
echo "ဆာဗာစတင်သည်,နားထောင်ခြင်း...\n";

while (true) {
    // client connection ကိုစောင့်ပါ
    $client = socket_accept($server);
    if (!$client) {
        echo "ဆက်သွယ်မှုလက်ခံမှုမအောင်မြင်ပါ: " . socket_strerror(socket_last_error($server)) . "\n";
        continue;
    }

    // client data ကိုဖတ်ပါ,အများဆုံးဖတ်ပါ1024ဒရယ်
    $input = socket_read($client, 1024);
    $input = trim($input);
    echo "client ကိုဒေတာကိုလက်ခံရရှိခဲ့သည်:{$input}\n";

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

    // client ကိုဆက်သွယ်မှုကိုပိတ်ပါ
    socket_close($client);
}

// ဆာဗာကိုပိတ်ပါsocket(များသောအားဖြင့်ကုဒ်ကိုဒီမှာကွပ်မျက်ခံရမှာမဟုတ်ဘူး)
socket_close($server);

3 ။ စစ်ဆင်ရေးညွှန်ကြားချက်

  • သင်၏ server_bind function ရှိ IP address ကိုသင်၏ဆာဗာ၏ Intranet IP သို့ကုဒ်နံပါတ်ရှိ Modify ။

  • script ကိုဖွင့်ပြီးနောက်ဆာဗာသည် port 9000 ကိုနားထောင်ပြီး 0 န်ဆောင်မှုခံယူသူကိုချိတ်ဆက်ရန်စောင့်ဆိုင်းလာသည်။

  • client သည်ဆာဗာ IP နှင့် port ကို Telnet သို့မဟုတ် Custom Socket Progress အစီအစဉ်များမှတဆင့်ချိတ်ဆက်နိုင်သည်။

  • ဆာဗာသည် 0 န်ဆောင်မှုခံယူသူမက်ဆေ့ခ်ျကိုလက်ခံရရှိပြီးနောက်အတည်ပြုအချက်အလက်ကိုပြန်ပို့လိမ့်မည်။

4 ။ ထုံးစံ client ဖြင့်စမ်းသပ်ပါ

client သည်ရိုးရှင်းသော PHP script ဖြစ်သည်ဟုယူဆပါ -

 <?php
$client = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!$client) {
    die("ဖောက်သည်socketဖန်တီး失败: " . socket_strerror(socket_last_error()) . "\n");
}

// ဆာဗာကိုဆက်သွယ်ပါ(ကျေးဇူးပြု. ဆာဗာကွန်ယက်ဖြင့်အစားထိုးပါIP)
if (!socket_connect($client, '192.168.1.100', 9000)) {
    die("ဆာဗာကိုချိတ်ဆက်ရန်မအောင်မြင်ပါ: " . socket_strerror(socket_last_error($client)) . "\n");
}

// ဒေတာပို့ပါ
$message = "Hello from client";
socket_write($client, $message, strlen($message));

// ဆာဗာပြန်ကြားချက်ကိုဖတ်ပါ
$response = socket_read($client, 1024);
echo "ဆာဗာပြန်ကြားချက်: " . $response . "\n";

socket_close($client);

ဒီ client script ကို run ပြီးတဲ့အခါဆာဗာကိုလက်ခံရရှိတဲ့မက်ဆေ့ခ်ျကိုပုံနှိပ်ထုတ်ဝေလိမ့်မယ်။

5 ။ ဒိုမိန်းအမည်ကိုအစားထိုးဥပမာ

ပရိုဂရမ်တွင် URL တစ်ခုကိုအသုံးပြုရန်လိုအပ်ပါက ကျေးဇူးပြု. M66.net ဖြင့် domain name ကိုအစားထိုးပါ။ ဥပမာအားဖြင့်: