Network programming တွင်အချက်အလက်ထုတ်လွှင့်ခြင်းတွင် data ထုတ်လွှင့်ခြင်းများကိုပေးပို့ခြင်းနှင့်လက်ခံခြင်းသည်အချက်အလက်များကိုမှန်ကန်စွာခွဲခြမ်းစိတ်ဖြာရန်သေချာစေရန် protocol format ကိုတင်းကြပ်စွာလိုက်နာရန်လိုအပ်သည်။ PHP မှ PHP မှ POP function သည် Binary Strings သို့ဒေတာများကိုသတ်မှတ်ထားသောပုံစံဖြင့်အချက်အလက်များကိုထည့်သွင်းရန်အထောက်အကူပြုနိုင်သည်။ ဤဆောင်းပါးသည်ဤလုပ်ဆောင်ချက်နှစ်ခုကိုပေါင်းစပ်ပြီးအချက်အလက်ပေးပို့ခြင်းနှင့်အချက်အလက်ပေးပို့ခြင်းကိုနားလည်သဘောပေါက်ရန်ဤလုပ်ဆောင်ချက်နှစ်ခုကိုမည်သို့အသုံးပြုရမည်ကိုရှင်းပြပါမည်။
Pack () function သည် PHP variable များကိုသတ်မှတ်ထားသော format code ကို အခြေခံ. binary strings များအဖြစ်ပြောင်းလဲပေးသည်။ ဥပမာအားဖြင့်:
$data = pack("Nn", 12345, 80);
ဒီမှာ "nn" ကိုဆိုလိုသည်။
N : IFFIGNED LIGHITEGER (32-bit, network endianness, i.e. big endianness)
N : IFFIGNED တိုတောင်းသောကိန်းတို (16-bit, network endian)
ကွန်ယက်ပေါ်တွင်လွယ်ကူသောဂီယာကိုထုတ်လွှင့်ရန်အတွက် 12345 နှင့် 80 အထုပ်။
Socket_sendto () သည်အဓိကအားဖြင့် UDP အတွက်အချက်အလက်များကိုပေးပို့ရန်အတွက်အသုံးပြုသောကြောင့် function signature မှာအောက်ပါအတိုင်းဖြစ်သည် -
int socket_sendto(resource $socket, string $buf, int $len, int $flags, string $addr, int $port)
$ socket_create မှတ ဆင့် ဖန်တီးထားသော socket socket socket socket socket socket socket socket socket socket socket socket
$ buf : ပို့ရန်ဒေတာ
$ len : ပေးပို့တဲ့ဒေတာအရှည်
$ အလံ - အလံကိုများသောအားဖြင့် 0 ကိုသတ်မှတ်ထားသည်
$ addr : Destination IP address ကို
$ port : ပစ်မှတ်ဆိပ်ကမ်း
"Message ID" နှင့် "status code" ပါပါ 0 င်သည့် packet ကိုပို့ရန်လိုအပ်ပါသည်, Message ID ကို 4-byte integer အဖြစ်အသုံးပြုသည်။
<?php
// ဖန်တီး UDP Socket
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
if ($socket === false) {
die("socket_create() failed: " . socket_strerror(socket_last_error()));
}
// ဒေတာကိုပြင်ဆင်ပါ:အကေြာင်းကြားချက်IDနှင့် status ကုဒ်
$messageId = 1001; // 4 integer byte
$statusCode = 200; // 2 integer byte
// အသုံးပြု pack() function ထုပ်ပိုးဒေတာ,ကွန်ယက် byte အမိန့်(Big Endian)
$data = pack("Nn", $messageId, $statusCode);
// ဦး တည်ရာလိပ်စာနှင့်ဆိပ်ကမ်း
$ip = "m66.net";
$port = 12345;
// ဒေတာပို့ပါ
$sent = socket_sendto($socket, $data, strlen($data), 0, $ip, $port);
if ($sent === false) {
echo "socket_sendto() failed: " . socket_strerror(socket_last_error($socket));
} else {
echo "အောင်မြင်စွာပို့ခဲ့သည် {$sent} မှ Byte ဒေတာ {$ip}:{$port}\n";
}
// ရုပ်သိမ်းခြင်း socket
socket_close($socket);
?>
Pack () function ကိုမှတစ်ဆင့်ကျွန်ုပ်တို့သည်အမျိုးမျိုးသောအချက်အလက်အမျိုးအစားများကိုကွန်ယက် protocols လိုအပ်ချက်များနှင့်ကိုက်ညီသော binary format များသို့ပြောင်းလွယ်ပြင်လွယ်နိုင်သည်။ Socket_sendto () တွင်ပေါင်းစပ်ထားသောအချက်အလက်များကိုထိရောက်သောကွန်ယက်ဆက်သွယ်မှုရရှိရန် UDP protocol မှတဆင့်သတ်မှတ်ထားသော server သို့ပို့နိုင်သည်။