PHP တွင်ကွန်ယက်ဝန်ဆောင်မှုပရိုဂရမ်များကို Socket extensions များမှတဆင့်ဖန်တီးနိုင်သည်။ ၎င်းတို့အနက် Socket_Accept () function သည် TCP-based server applications များကိုတည်ဆောက်သည့်အခါအဓိကလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ဤဆောင်းပါးသည် Socket_Accept ကို အသုံးပြု. ရိုးရှင်းသော echo server (echo server) ကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုဖော်ပြရန်အပြည့်အဝဥပမာကိုအသုံးပြုမည်။
Socket_Accept () သည် client ထံမှဆက်သွယ်မှုတောင်းဆိုမှုကိုလက်ခံရန်အသုံးပြုသည်။ ဆက်သွယ်မှု 0 င်ရောက်သည်အထိ server Socket ရှိဤလုပ်ဆောင်မှုလုပ်ကွက်များ။ အောင်မြင်သောအခါ၎င်းသည် client နှင့်ဆက်သွယ်ရန်အသုံးပြုနိုင်သည့် socient အရင်းအမြစ်အသစ်ကိုပြန်ပို့သည်။
သဒ္ဒါ:
resource socket_accept ( resource $socket )
$ Socket သည် socket_create () နှင့် socket_bind () မှတဆင့် server socket ကိုဖန်တီးပြီးနားထောင်ခဲ့သည်။
client နှင့်ဆက်သွယ်ထားသော societ အရင်းအမြစ်တစ်ခုကိုပြန်ပို့သည်။
ရိုးရှင်းသောပဲ့တင်သံဆာဗာတစ်ခုကိုဖန်တီးရန်ပြီးပြည့်စုံသောအဆင့်များမှာ -
$server = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($server === false) {
die("socket_create() ဆုံးရှုံး: " . socket_strerror(socket_last_error()) . "\n");
}
$host = '0.0.0.0';
$port = 12345;
if (!socket_bind($server, $host, $port)) {
die("socket_bind() ဆုံးရှုံး: " . socket_strerror(socket_last_error($server)) . "\n");
}
if (!socket_listen($server, 5)) {
die("socket_listen() ဆုံးရှုံး: " . socket_strerror(socket_last_error($server)) . "\n");
}
echo "ဆာဗာစတင်သည်,ဆိပ်ကမ်းကိုနားထောင်ပါ $port ...\n";
while (true) {
$client = socket_accept($server);
if ($client === false) {
echo "socket_accept() ဆုံးရှုံး: " . socket_strerror(socket_last_error($server)) . "\n";
continue;
}
$msg = "echo server ကိုဆက်သွယ်ရန်ကြိုဆိုပါသည်!ကျေးဇူးပြု. အကြောင်းအရာကိုထည့်ပါ,ဆာဗာသည်လာလိမ့်မည်。\n";
socket_write($client, $msg, strlen($msg));
while (true) {
$input = socket_read($client, 2048, PHP_NORMAL_READ);
if ($input === false || trim($input) === 'exit') {
break;
}
$input = trim($input);
$output = "သင်ရိုက်ထည့်ခဲ့သည်: $input\n";
socket_write($client, $output, strlen($output));
}
socket_close($client);
echo "client connection ကိုပိတ်ထားသည်。\n";
}
ဆာဗာကိုသင်ရပ်တန့်ရန်လိုအပ်သည့်အခါအဓိက socket ကိုသင်ပိတ်နိုင်သည်။
socket_close($server);
Telnet သို့မဟုတ် client tool ကိုဆာဗာသို့ချိတ်ဆက်ရန် TCP ဆက်သွယ်မှုကိုထောက်ပံ့သောမည်သည့် client ကိုမဆိုသုံးနိုင်သည်။
telnet m66.net 12345
ဆက်သွယ်မှုအောင်မြင်ပြီးနောက်ဆာဗာသည်ကြိုဆိုသည့်သတင်းစကားကိုတုံ့ပြန်ပြီးသင်ထည့်သွင်းသမျှကိုပြန်ပို့လိမ့်မည်။
PHP ၏ socket extension ကိုပုံမှန်အားဖြင့်ဖွင့်ထားပြီး PHP.ini တွင်ဖွင့်ရန်လိုအပ်သည်။
ဤဥပမာသည် mode ကိုပိတ်ဆို့ခြင်းနှင့်သရုပ်ပြခြင်းနှင့်သင်ကြားရေးရည်ရွယ်ချက်များအတွက်သင့်တော်သည်။ အမှန်တကယ်ထုတ်လုပ်မှုပတ် 0 န်းကျင်များတွင်ပိတ်ဆို့ခြင်းမဟုတ်သော mode ကိုအသုံးပြုရန်သို့မဟုတ် client properky အထောက်အပံ့ကိုရရှိရန် stream_select () ကဲ့သို့သောနည်းလမ်းများကိုအသုံးပြုရန်အကြံပြုသည်။
Firewall နှင့် Operating System သည်နားထောင်ခြင်းဆိပ်ကမ်းများကိုဆက်သွယ်ခွင့်ပြုရန်သေချာစေပါ။
Socket_Accept ()) , PHP သည် TCP ကွန်ယက်လျှောက်လွှာကို အခြေခံ. တည်ဆောက်နိုင်သည်။ ဤဆောင်းပါးတွင်အကောင်အထည်ဖော်ထားသောပဲ့တင်သံဆာဗာသည် Socket Programming ယန္တရားကိုနားလည်ရန်အတွက်ကောင်းမွန်သောအစတစ်ခုဖြစ်သည်။ chat rooms, remote control စသည့်စသည်တို့စသည့်ပိုမိုရှုပ်ထွေးသောကွန်ယက် 0 န်ဆောင်မှုများကိုအကောင်အထည်ဖော်ရန်ဤအပေါ် မူတည်. ထပ်မံတိုးချဲ့နိုင်သည်။
ပဲ့တင်သံဆာဗာဥပမာသည် Socket Programming တွင်အခြေခံအကျဆုံးမော်ဒယ်များအနက်မှတစ်ခုဖြစ်သည်။ ဤဖောင်ဒေးရှင်းများကိုကျွမ်းကျင်စေခြင်းအားဖြင့် PHP ၏ network compacen ်ဌာန်းချက်တွင်အလားအလာသည်အတိုင်းအဆက်အသွယ်ရှိသည်။