ကွန်ယက်ပရိုဂရမ်တွင်ဆာဗာသည် client မှ connection တောင်းဆိုမှုများကိုလက်ခံရန်လိုအပ်သည်။ PHP သည် socket_accept (() သည် solectioning နှင့် connection များကိုအကောင်အထည်ဖော်ရန်အတွက်အရေးကြီးသော network compacence ကိုကိုင်တွယ်ရန် socket furction များကိုကိုင်တွယ်သည်။ ဤဆောင်းပါးသည် client accessions connections ကို အသုံးပြု . Socket_Accept ကို အသုံးပြုရမည်ကိုအသေးစိတ်ဖော်ပြပြီး၎င်းတို့ကိုဥပမာအားဖြင့်မည်သို့အသုံးပြုရမည်ကိုသရုပ်ပြပါလိမ့်မည်။
Socket_Accept () သည် PHP ရှိ function တစ်ခုဖြစ်သည်။ Socket နားထောင်ခြင်းတန်းမှဆက်သွယ်မှုတစ်ခုမှဆက်သွယ်မှုကိုရရှိသည်။ အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
socket_accept(Socket $socket): Socket|false
Parametermer
$ Socket : Socket_create () နှင့် Socket_bind 'socket_bind ဖြင့်ဖန်တီးထားသော socket ကိုဖန်တီးပြီးချည်နှောင်ခြင်းနှင့်ချည်နှောင်ခြင်း () ဖြင့်ချည်နှောင်ခြင်းနှင့်ချည်နှောင်ခြင်း။
Value ကိုပြန်သွားပါ
0 န်ဆောင်မှုခံယူသူနှင့်ဆက်သွယ်မှုအတွက်အောင်မြင်သောအခါအောင်မြင်သောအခါ socket အသစ်စက်စက်ကိုပြန်ပို့သည်။
ပျက်ကွက်အပေါ် မှားယွင်းသော ပြန်လာ။
Socket_Accept_Accept () မသုံးမီ, အောက်ပါအဆင့်များကိုသင်အများအားဖြင့်ဖြည့်စွက်ရန်လိုအပ်သည် -
Socket: Socket_create ()
လိပ်စာနှင့် port: Socket_bind ()
နားထောင်ပါ Socket_listen ()
ဆက်သွယ်မှုကိုရယူပါ။ Socket_accept ()
ဖောက်သည်များနှင့်ဆက်သွယ်ခြင်း - Socket_read () နှင့် Socket_write ()
ဆက်သွယ်မှုကိုပိတ်ပါ။ Socket_Close ()
client_Accept ဆက်သွယ်မှုကိုလက်ခံရရှိရန် Socket_Accept ကိုမည်သို့အသုံးပြုရမည်ကိုပြသသည့် societ_accept () ကို မည်သို့အသုံးပြုရမည်နည်း။
<?php
// လိပ်စာနှင့် port ကိုသတ်မှတ်ပါ
$address = '0.0.0.0';
$port = 12345;
// ဖန်တီး socket
$serverSocket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($serverSocket === false) {
die("socket_create() ဆုံးရှုံး: " . socket_strerror(socket_last_error()) . "\n");
}
// လိပ်စာနှင့်ဆိပ်ကမ်းချည်နှောင်ခြင်း
if (!socket_bind($serverSocket, $address, $port)) {
die("socket_bind() ဆုံးရှုံး: " . socket_strerror(socket_last_error($serverSocket)) . "\n");
}
// ဆက်သွယ်မှုကိုနားထောင်ပါ
if (!socket_listen($serverSocket)) {
die("socket_listen() ဆုံးရှုံး: " . socket_strerror(socket_last_error($serverSocket)) . "\n");
}
echo "ဆာဗာစတင်သည်,နားထောင်ခြင်း {$address}:{$port} ...\n";
// client connection များကိုလက်ခံရရှိသည်
$clientSocket = socket_accept($serverSocket);
if ($clientSocket === false) {
echo "socket_accept() ဆုံးရှုံး: " . socket_strerror(socket_last_error($serverSocket)) . "\n";
} else {
// 0 န်ဆောင်မှုခံယူသူအားကြိုဆိုသောစာတစ်စောင်ပို့ပါ
$welcome = "ဆက်သွယ်မှုမှကြိုဆိုပါသည် m66.net ဆာဆာ\n";
socket_write($clientSocket, $welcome, strlen($welcome));
// client data ကိုဖတ်ပါ
$input = socket_read($clientSocket, 1024);
echo "တစ် ဦး client ကိုမက်ဆေ့ခ်ျကိုလက်ခံရရှိခဲ့သည်: " . trim($input) . "\n";
// client ကိုတုံ့ပြန်
$response = "မင်းဒါကိုပို့လိုက်တယ်: " . $input;
socket_write($clientSocket, $response, strlen($response));
// Client Convice Connection
socket_close($clientSocket);
}
// 关闭ဆာဆာ socket
socket_close($serverSocket);
?>
Permissions ပြ issue နာ - port များ (ဥပမာ - 80, 443 စသည့်) ports (ဥပမာ) ကိုနားထောင်သောအခါအုပ်ချုပ်ရေးခွင့်ပြုချက်များလိုအပ်နိုင်သည်။
TIMEOUT processing : socket_accept () သည်ပိတ်ဆို့ခြင်းလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ သင်ပိတ်ဆို့ခြင်းမဟုတ်သော mode ကိုလိုအပ်ပါက socket_set_setonblock () ကို သုံးနိုင်သည်။
လုံခြုံရေး - သင့်လျော်သောအမှားကိုင်တွယ်ခြင်းနှင့်သစ်ထုတ်လုပ်ရေးယန္တရားများကိုအန္တရာယ်ရှိသောဆက်သွယ်မှုများကိုကာကွယ်ရန်ထုတ်လုပ်မှုပတ် 0 န်းကျင်တွင်ထည့်သွင်းသင့်သည်။
Multi-client support : ဤဥပမာသည် client တစ်ခုကိုသာကိုင်တွယ်သည်။ အကယ်. သင်ဖောက်သည်များစွာကိုတစ်ချိန်တည်းကိုင်တွယ်ရန်လိုအပ်ပါက PCNTL_Fork () သို့မဟုတ် multi-threaded extension ကိုပေါင်းစပ်နိုင်သည်။
Socket_Accept () သည် PHP ကွန်ယက်ဆက်သွယ်ရေးတွင်မရှိမဖြစ်လိုအပ်သော link တစ်ခုဖြစ်သည်။ ဤဆောင်းပါး၏ရှင်းပြချက်နှင့်ဥပမာများအနေဖြင့် client ည့်ခံခြင်းနှင့်အပြန်အလှန်ဆက်သွယ်မှုလုပ်ဆောင်မှုများကိုနားလည်သဘောပေါက်ရန်အခြေခံ Socket Server တည်ဆောက်ရေးလုပ်ငန်းစဉ်နှင့် socket_accept () ကို အသုံးပြု. Socket_accept () ကို အသုံးပြု. ရွေးချယ်သင့်သည်။