ထိန်းချုပ်မှုမက်ဆေ့ခ်ျများကွန်ယက်အက်ပလီကေးရှင်းများတည်ဆောက်ရာတွင်ကွန်ယက်အက်ပလီကေးရှင်းများကိုတည်ဆောက်ရာတွင်ကွန်ယက်အချက်အလက်ဖြန့်ချိမှုကိုကိုင်တွယ်ရာတွင်အရေးပါသောအခန်းကဏ် play မှပါ 0 င်သည်။ PHP တွင် Network Message Buffer ၏နေရာကိုတွက်ချက်ရန် Socket_cMsg_space function ကို အသုံးပြု. ထိန်းချုပ်မှုမက်ဆေ့ခ်ျများကိုစီမံနိုင်သည်။ ဤထိန်းချုပ်မှုမက်ဆေ့ခ်ျများတွင်ပါ 0 င်သော်လည်း Multicast options များ, network connections ၏အခြေအနေသတင်းအချက်အလက်များကိုသာကန့်သတ်ထားခြင်းမရှိပါ။
Socket_cMsg_space သည် PHP ရှိ function တစ်ခုဖြစ်ပြီးဂီယာထိန်းချုပ်မှုမက်ဆေ့ခ်ျများအတွက်လိုအပ်သောနေရာကိုတွက်ချက်ရန်။ ၎င်း၏ function သည်အချက်အလက်များကိုပေးပို့သည့်အခါသို့မဟုတ်လက်ခံသည့်အခါထိန်းချုပ်မှုမက်ဆေ့ခ်ျများချမှတ်ရန်နေရာသို့မဟုတ်တစ်ခုထက်ပိုသောထိန်းချုပ်မှုမက်ဆေ့ခ်ျများသိုလှောင်ရန်လိုအပ်သောနေရာများကိုခန့်မှန်းရန်ဖြစ်သည်။ ဤနည်းအားဖြင့်ပရိုဂရမ်သည်ကွန်ယက် protocol ၏ထိန်းချုပ်မှုဆိုင်ရာအချက်အလက်များကိုထိရောက်စွာလုပ်ဆောင်နိုင်သည်။
လုပ်ဆောင်ချက်ကိုအောက်ပါအတိုင်းသတ်မှတ်ထားသည်။
int socket_cmsg_space(int level, int type);
အဆင့် - မက်ဆေ့ခ်ျကိုပိုင်ဆိုင်သည့် protocol layer ကိုထိန်းချုပ်သည် (များသောအားဖြင့် iPproto_ip သို့မဟုတ် ipproto_ipv6 စသည်) ။
အမျိုးအစား - IP address, multicast အချက်အလက်စသည့်မက်ဆေ့ခ်ျအမျိုးအစားကိုထိန်းချုပ်သည်။
ပြန်လာတန်ဖိုးမှာလိုအပ်သောနေရာအရွယ်အစား (bytes တွင်) ဖြစ်သည်။
Custom network protocols များအတွက်ထိန်းချုပ်မှုမက်ဆေ့ခ်ျများကိုစီမံရန် Socket_CMSG_SPACE function ကိုမည်သို့အသုံးပြုရမည်ကိုသရုပ်ပြရန်ကျွန်ုပ်တို့သည်စိတ်ကြိုက် protocol များကို အသုံးပြု. Constitution Status, Connection stature parametersters စသည့်ထိန်းချုပ်မှုအချက်အလက်အချို့ကိုပို့လိုသည်ဆိုပါစို့။
ပထမ ဦး စွာကျွန်ုပ်တို့သည်ဝေးလံသောအိမ်ရှင်နှင့်ဆက်သွယ်ရန် socket connection တစ်ခုဖန်တီးရန်လိုအပ်သည်။
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "Socket creation failed: " . socket_strerror(socket_last_error()) . "\n";
exit();
}
Control Messages ကိုခွဲဝေချထားပေးရန်လိုအပ်သည့်နေရာကိုတွက်ချက်ရန် Socket_CMSG_SPACE ကို သုံးပါ။
$level = IPPROTO_IP;
$type = SOL_SOCKET; // ဥပမာကိုအသုံးပြုသည် SOL_SOCKET ပုံနှိပ်စာ,သင်လိုအပ်သလိုပြုပြင်နိုင်သည်
$space_required = socket_cmsg_space($level, $type);
echo "Required space for control messages: " . $space_required . " bytes\n";
ဤကုဒ်သည်ကျွန်ုပ်တို့ထိန်းချုပ်မှုမက်ဆေ့ခ်ျများပေးပို့ရန်လိုအပ်သည့်နေရာ၏အရွယ်အစားကိုထုတ်ပေးသည်။ အမှန်တကယ်ထိန်းချုပ်မှုမက်ဆေ့ခ်ျကိုအကြောင်းအရာနှင့် protocol layer သည်ကွဲပြားနိုင်သည်, ထို့ကြောင့်ကွန်ယက် protocol နှင့်လိုအပ်ချက်များအရဤသတ်မှတ်ချက်များကိုသင်ညှိရန်လိုအပ်သည်။
လိုအပ်သည့်နေရာကိုတွက်ချက်ပြီးတာနဲ့ကျွန်ုပ်တို့သည်သက်ဆိုင်ရာထိန်းချုပ်မှုမက်ဆေ့ခ်ျကို ဖန်တီး. ပုံမှန် packet ကိုထည့်နိုင်သည်။ Control Messages ပေးပို့ခြင်း၏ရိုးရှင်းသောဥပမာတစ်ခုမှာ -
$data = "Hello, custom network protocol!";
$message = "Custom control message"; // ဤသည်ကျွန်ုပ်တို့ထုတ်လွှင့်ချင်သောထိန်းချုပ်မှုသတင်းစကားဖြစ်သည်
// ထိန်းချုပ်မှုမက်ဆေ့ခ်ျများကိုသိမ်းဆည်းရန်သင့်တွင်နေရာအလုံအလောက်ရှိပါစေသေချာစေရန်လိုအပ်သည်
if (strlen($message) <= $space_required) {
socket_send($socket, $message, strlen($message), 0);
} else {
echo "Insufficient space for control message.\n";
}
Protocol layer ကိုရွေးချယ်ခြင်း - Socket_cMsg_space ၏အ ဆင့် parameter သည်မက်ဆေ့ခ်ျများကိုထိန်းချုပ်ရန် protocol layer ကိုသတ်မှတ်ရန်အသုံးပြုသည်။ သင်၏ network protocol ကိုကိုက်ညီရန်မှန်ကန်သော protocol layer ကိုရွေးချယ်ပါ။
ထိန်းချုပ်မှုမက်ဆေ့ခ်ျအမျိုးအစားများ - IP address configuration, routing information or multicast group 0 င်စီမံခန့်ခွဲမှုကဲ့သို့သော confirm အမျိုးအစားအမျိုးမျိုးကိုသင်အသုံးပြုနိုင်သည်။ ထိန်းချုပ်မှုမက်ဆေ့ခ်ျတစ်ခုစီ၏ပုံစံနှင့်အရွယ်အစားကိုနားလည်ရန်သေချာပါစေ။
Buffer Size : socket_cmsg_space function ကသင့်ကိုအာကာသကိုခန့်မှန်းတွက်ချက်မှုကိုကူညီသည်။ သင်ပို့လိုက်သောအချက်အလက်များသည်ခန့်မှန်းခြေနေရာထက်ကျော်လွန်ပါက၎င်းသည်ကွန်ရက်မှကူးစက်မှုကိုကျရှုံးစေလိမ့်မည်။
PHP ပရိုဂရမ်မာများကို PHP ပရိုဂရမ်မာများအား Custom protocol များတွင်ထိန်းချုပ်မှုမက်ဆေ့ခ်ျများကိုစီမံရန် Socket_cMsg_space function ကိုသုံးပါ။ လိုအပ်သောနေရာကိုတွက်ချက်ခြင်းအားဖြင့်ကွန်ယက်ပရိုတိုကော၏ထိန်းချုပ်မှုအချက်အလက်များကိုမှန်ကန်စွာကူးစက်နိုင်ပြီးကြားခံလျှံလျှောပြ problems နာများကိုရှောင်ရှားနိုင်ရန်သေချာသည်။ ရှုပ်ထွေးသော network applications များသို့မဟုတ် protocol အကောင်အထည်ဖော်မှုများကိုတီထွင်သော developer များအတွက်ဤလုပ်ဆောင်မှုကိုအသုံးပြုခြင်း၏ကျွမ်းကျင်မှုများကိုကျွမ်းကျင်စွာဖန်တီးပေးခြင်းသည် Code ၏ယုံကြည်စိတ်ချရမှုနှင့်ထိရောက်မှုကိုများစွာတိုးတက်စေလိမ့်မည်။