Network Programming အတွက် PHP ကိုအသုံးပြုသောအခါ socket သည် server-client ဆက်သွယ်ရေးကိုအကောင်အထည်ဖော်ရန်အတွက်အရေးကြီးသောယန္တရားတစ်ခုဖြစ်သည်။ Socket_Accept () နှင့် socket_read () သည် client connection များနှင့်စာဖတ်ခြင်းမက်ဆေ့ခ်ျများကိုကိုင်တွယ်ရန်အတွက်အဓိကလုပ်ဆောင်ချက်များဖြစ်သည်။ ဤဆောင်းပါးသည် Client Message ကိုလက်ခံခြင်း၏လုပ်ဆောင်မှုကိုနားလည်ရန်ရိုးရှင်းသော TCP ဆာဗာပရိုဂရမ်တစ်ခုတည်ဆောက်ရန်ဤလုပ်ဆောင်ချက်နှစ်ခုကိုမည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်ရှင်းပြပါမည်။
ပထမ ဦး စွာ PHP တွင် sockets extension ကိုတပ်ဆင်ထားပါ။ ၎င်းကိုထောက်ပံ့သည်ကိုစစ်ဆေးရန်အောက်ပါ command ကိုအသုံးပြုပါ။
php -m | grep sockets
မဖွင့်ပါက php.ini ရှိ socket များ = socketets များကို unomment = socketets များကို php.ini ကိုပြန်လည်စတင်နိုင်သည်။
အောက်တွင်ဖော်ပြထားသည်မှာ 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);
ဆာဗာကိုစမ်းသပ်ရန် 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);
Socket_Accept () - client မှ connection တောင်းဆိုမှုများကိုလက်ခံရန်အသုံးပြုသည်။ client connection မရှိပါကစောင့်ဆိုင်းနေအောင်လုပ်လိုက်ပါ။
Socket_read () - client မှအချက်အလက်များကိုဖတ်ရန်အသုံးပြုသည်။ ၎င်းသည်များသောအားဖြင့် 1024 သို့မဟုတ်ထိုထက်မကသော bytes အများဆုံးအရေအတွက်ကိုသတ်မှတ်နိုင်သည်။
Socket_write () : အချက်အလက်များကို client သို့ပို့ရန်အသုံးပြုသည်။
အခြေခံ TCP ဆက်သွယ်ရေးယန္တရားကို Socket_Accept () နှင့် socket_read () ကို သုံး. အကောင်အထည်ဖော်နိုင်သည်။ PHP သည်ကွန်ယက်ပရိုဂရမ်းမင်းကိုအခြေခံသည့်အသုံးအများဆုံးသောဘာသာစကားမဟုတ်သော်လည်း Socket extensions များမှတဆင့်ခိုင်မာသောကွန်ယက်ဆက်သွယ်ရေးစွမ်းရည်ရှိသည်။ ပေါ့ပါးသော 0 န်ဆောင်မှုများ, သတင်းစကားနားထောင်သူများ,
ဤဆောင်းပါးတွင်ဥပမာများဖြင့်ဆာဗာ socket တစ်ခုမည်သို့ဖန်တီးရမည်, client connection များကိုလက်ခံခြင်း, 0 န်ဆောင်မှုခံယူသူများကိုလက်ခံခြင်း, သင့်လျော်သောအမှားကိုင်တွယ်မှုနှင့်တစ်ပြိုင်နက်တည်းဒီဇိုင်းကိုပေါင်းစပ်ပြီးပိုမိုရှုပ်ထွေးသောဆက်သွယ်ရေးစနစ်ကိုထပ်မံတည်ဆောက်နိုင်သည်။