iT邦幫忙

0

獲取監聽中的port中資訊與傳送指令

  • 分享至 

  • xImage

情況

因應需要而開啟一個port去監聽,並且獲取一台會定時傳送資料至指定網域的機器資訊,必要時也需要傳送指令給機器。

目前

透過php開啟了一個監聽port,並且將讀到的資訊寫入資料庫中
-讀取則直接讀取資料庫
-寫入則是透果php讀取資料庫中特定資訊判定是否需要傳送指令

問題

1.多台機器時,需要使用多個port,通常如何控制與讀取較為合理?
2.是否有其他方法能夠讓監聽中的port判斷是否傳送指令給遠端機器?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0

多台機器時,需要使用多個port
應該是程式帶上 IP 標記
使用同一個 Port 就可以了

rapaul iT邦新手 5 級 ‧ 2021-08-31 12:06:16 檢舉

謝謝

如果是透過TCP協定傳輸,是否也有相關方法可以設定共用Port?
目前測試上Port連線上機器後,其他台則無法連線

0
IT 癡
iT邦高手 1 級 ‧ 2021-08-31 10:47:17

1.多台機器時,需要使用多個port,通常如何控制與讀取較為合理?

我使用多部較舊 PC 個別接收,因量大、這樣比較不會出問題,反正那些 PC 也沒用途,
東拼西湊出規格比較高的拿來用,還可以去跟上面邀功,降低公司採購成本、廢物利用
2.是否有其他方法能夠讓監聽中的port判斷是否傳送指令給遠端機器?
用途 ??? 既已傳送到資料庫了,有多部資料庫狀況下,後端使用 PHP 整合所有資料庫資料就好了

rapaul iT邦新手 5 級 ‧ 2021-08-31 12:15:37 檢舉

謝謝

目前狀況大概如下圖
https://ithelp.ithome.com.tw/upload/images/20210831/201322417bjMBieKRX.png

遇到的問題是,傳送指令開關燈會受限於PHP中socket寫法,只有當燈具傳送訊號時,才會去讀資料庫中的開關燈狀態,並發送指令給燈具。

do {
    if (($msgsock = socket_accept($socket)) === false) {
        echo "Error: socket_accept: " . socket_strerror(socket_last_error($socket)) . "\n";
        break;
    }

    /* Send Welcome message. */
    $msg = "\nPHP Websocket \n";

    // Listen to user input
    do {
        if (false === ($buf = socket_read($msgsock, 8192, PHP_NORMAL_READ))) {
            echo "socket read error: ".socket_strerror(socket_last_error($msgsock)) . "\n";
            break 2;
        }
        if (!$buf = trim($buf)) {
            continue;
        }
        
        ///////////////////////////////
        ////讀取資料庫資料與寫入資料庫///
        ////////////////////////////////
        
        echo "$buf\n";
        
    } while (true);
    socket_close($msgsock);
} while (true);

我要發表回答

立即登入回答