လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Iot Devices မှဒေတာတင်ခြင်းများကိုလက်ခံရရှိရန် Socket_Accept () ကိုသုံးပါ

Iot Devices မှဒေတာတင်ခြင်းများကိုလက်ခံရရှိရန် Socket_Accept () ကိုသုံးပါ

M66 2025-05-29

အမှုအရာများ (IOT) စီမံကိန်းများအနေဖြင့်ဆာဗာသည်များသောအားဖြင့် device မှ uploaded ဒေတာများကိုအချိန်နှင့်တပြေးညီရရှိသည်။ ဤကိရိယာများသည် Sensor Data, အခြေအနေသတင်းအချက်အလက်များစသည်တို့ကို Sensor Data, အခြေအနေသတင်းအချက်အလက်များစသည်တို့ကိုပို့ရန် TCP ဆက်သွယ်မှုကိုသုံးနိုင်သည်။ PHP သည်ရိုးရာအဓိပ္ပာယ်တွင်ကွန်ယက်ပရိုဂရမ်းမင်းအတွက် ဦး စားပေးဘာသာစကားမဟုတ်သော်လည်း၎င်းသည်၎င်း၏ built-in အခြားသော socket extension မှတဆင့်ဤအလုပ်အတွက်အရည်အချင်းရှိနိုင်သည်။ iot devices များမှအချက်အလက်များကိုလက်ခံရန်နှင့်အခြေခံအပြောင်းအလဲအတွက်လုပ်ဆောင်ရန် Socket_Accept () function ကိုမည်သို့အသုံးပြုရမည်ကိုဤဆောင်းပါးသည်မိတ်ဆက်ပေးလိမ့်မည်။

1 ။ ပြင်ဆင်မှု

ပထမ ဦး စွာသင်၏ PHP ပတ် 0 န်းကျင်သည် Socket များ တိုးချဲ့မှုကိုသေချာအောင်လုပ်ပါ။ Phpinfo () ကို အသုံးပြု. ၎င်းကိုဖွင့်ထားသလားဆိုတာသင်အတည်ပြုနိုင်သည်။

2 ။ server-side socket တစ်ခုဖန်တီးပါ

အခြေခံ TCP Socket Server တစ်ခုကိုဖန်တီးရန်အဆင့်များမှာ -

 <?php
// ဆာဗာလိပ်စာနှင့်ဆိပ်ကမ်းများကိုတည်ဆောက်ခြင်း
$host = '0.0.0.0';
$port = 8888;

// ဖန်တီး socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!$socket) {
    die("无法ဖန်တီး socket:" . socket_strerror(socket_last_error()));
}

// ချည်နေှာင် socket ရောက်လာ IP နှင့် ports
if (!socket_bind($socket, $host, $port)) {
    die("ချည်နေှာင်ဆုံးရှုံး:" . socket_strerror(socket_last_error($socket)));
}

// ဆက်သွယ်မှုကိုနားထောင်ပါ
if (!socket_listen($socket)) {
    die("နားထောင်ခြင်းမအောင်မြင်ပါ:" . socket_strerror(socket_last_error($socket)));
}

echo "ဆာဗာစတင်ခဲ့သည်,ကိရိယာချိတ်ဆက်ရန်စောင့်ပါ...\n";

3 ။ စက်ချိတ်ဆက်မှုကိုလက်ခံပါ

ဆက်သွယ်မှုကိုလက်ခံရရှိရန် Socket_Accept ကို သုံးပါ။ စက်ချိတ်ဆက်မှုတစ်ခုမရောက်မချင်းဤလုပ်ဆောင်မှုလုပ်ကွက်များ -

 while (true) {
    $clientSocket = socket_accept($socket);
    if ($clientSocket === false) {
        echo "socket_accept ဆုံးရှုံး:" . socket_strerror(socket_last_error($socket)) . "\n";
        continue;
    }

    echo "ကိရိယာချိတ်ဆက်နေသည်。\n";

    // device မှပေးပို့သောအချက်အလက်များကိုဖတ်ပါ
    $input = socket_read($clientSocket, 1024);
    if ($input === false) {
        echo "读取ဆုံးရှုံး:" . socket_strerror(socket_last_error($clientSocket)) . "\n";
    } else {
        echo "接收ရောက်လာ数据:$input\n";

        // ဒေတာဖြစ်ပါတယ်ယူဆ JSON ပမာဏ,decoding လုပ်ဆောင်ပါ
        $data = json_decode(trim($input), true);
        if (json_last_error() === JSON_ERROR_NONE) {
            // နမူနာ:အပူချိန်အာရုံခံကိရိယာဒေတာကို processing
            if (isset($data['device_id'], $data['temperature'])) {
                $deviceId = $data['device_id'];
                $temperature = $data['temperature'];

                // 假设保存ရောက်လာ数据库或执行其他处理逻辑
                echo "ပစ္စည်းကရိယာ $deviceId တင်ပါ:$temperature °C\n";

                // အပြောင်းအလဲနဲ့ရလဒ်ကိုပြန်သွားပါ
                $response = json_encode(['status' => 'ok']);
                socket_write($clientSocket, $response);
            } else {
                echo "收ရောက်လာ非法数据。\n";
            }
        } else {
            echo "JSON 解码ဆုံးရှုံး。\n";
        }
    }

    // လက်ရှိဆက်သွယ်မှုကိုပိတ်ပါ
    socket_close($clientSocket);
}

4 ။ အနီးကပ် socket (0 န်ဆောင်မှုကိုရပ်တန့်သောအခါ)

 socket_close($socket);

5 ။ iot device side ဥပမာ

IOT Device သည် TCP ဆက်သွယ်မှုကို JSO format ဖြင့်ရေးဆွဲရန်သာလိုအပ်သည်။ ဥပမာအားဖြင့်:

 {
  "device_id": "sensor_001",
  "temperature": 25.6
}

ဒေတာများကို M66.Net clients များမှတဆင့် TCP ဖောက်သည်များမှတစ်ဆင့်ဆာဗာ၏ M66.Net 0 န်ဆောင်မှုများမှတစ်ဆင့်ဆာဗာကိုပေးပို့နိုင်သည်။

6 ။ လုံခြုံရေးနှင့် extension ကို

  • လုံခြုံရေး - ထုတ်လုပ်မှုပတ် 0 န်းကျင်တွင်ဒေတာများကိုထုတ်လွှင့်ရန်အတွက်စာဝှက်စနစ် (ဥပမာ tls) ကိုအသုံးပြုရန်အကြံပြုသည်။

  • တစ်ပြိုင်နက်တည်းညှိနှိုင်းမှု - ဆက်သွယ်မှုမျိုးစုံကိုကိုင်တွယ်ရန်ကလေးဖြစ်စဉ်ကိုဖန်တီးရန် PCNTL_Fork () ကိုအသုံးပြုခြင်းကိုစဉ်းစားပါ။

  • ဒေတာဇွဲရှိခြင်း - Device Data ကို MySQL, Redis သို့မဟုတ် log files များသို့ရေးသားနိုင်သည်။

ကောက်ချက်

Socket Programming အတွက် PHP သည် Socket Programming အတွက်ဒီဇိုင်းမရှိသော်လည်း developer များသည် socket_accept () ကဲ့သို့သော built-in functions များနှင့်အတူဆာဗာကိုလက်ခံရရှိသည့်ရိုးရှင်းသောနှင့်လက်တွေ့ကျသော Iot အချက်အလက်များကိုလျင်မြန်စွာတည်ဆောက်နိုင်သည်။ အသေးစားစက်ဆက်သွယ်ရေးနှင့်စမ်းသပ်ခြင်းပတ် 0 န်းကျင်များတွင် PHP ကိုအသုံးပြုခြင်းသည်လုံးဝဖြစ်နိုင်ခြေရှိသည်။ iot Data ကိုလုပ်ဆောင်ရန်ဤဆောင်းပါးသည်သင့်အားပိုမိုကောင်းမွန်သောနားလည်မှု ကို ပိုမိုနားလည်ပြီး,