[OpenR8 library] Httpd (網路資料傳輸)

一、Httpd library介紹

 

Httpd 是個常被用來作 web 伺服器使用的開源軟體,我們可以透過指定 URL 方式,post 或 get 資料然後顯示在網頁上。在我們 OpenR8 中的 Httpd library 內含 13 個函式,如圖1,然而,網頁是否連線成功、網頁內容是否能如預期的顯示在網頁上,最重要的是【Httpd_設置】的設置 URL 是否正確,詳情請看【Httpd_設置】。

※ 【Httpd_開始】與【Httpd_停止】是一對的,有拉【Httpd_開始】的函式時,在最後要結束連線的時候請記得拉【Httpd_停止】來停止 server。

 

※ 關於 Httpd 解決方案的說明,請參考 [OpenR8 解決方案] HttpServer (網頁伺服器)

 

圖1. Httpd Library 函式.png

圖1. Httpd library 函式。

 

【Httpd_初始化】:建立一個 Httpd 物件。

參數欄位:

  • 結果:輸出初始化是否成功。

回傳結果值為 -1,未新增 Httpd 物件,請新增 Httpd 物件參數;

回傳結果值為 1,成功初始化 Httpd 物件。

  • Httpd 物件:建立一個 Httpd 物件。

 

【Httpd_設置】:設置 httpd 的埠、執行緒數量、最大監聽數、超時。

參數欄位:

  • 結果:輸出設置是否成功。

回傳結果值為 -1,未選擇已初始化過的 Httpd 物件;

回傳結果值為 1,成功設置 Httpd。

  • Httpd 物件:選擇已初始化過的 Httpd 物件。
  • 埠:server 連線要使用哪個 port,若不填時,預設為 80。
  • 根目錄:讀取或儲存檔案的資料夾位置(【Httpd_寫入檔案】會用到)。
  • 執行緒數量:thread 數量,不填時,預設為1024。
  • 最大監聽連線數:backlog 連線數量,不填時,預設為1024。
  • 超時:超過設定時間 (單位:秒) 未回應,就中斷連線,不填時,預設為10。

範例:

圖2是參數設定的範例。

 

圖2. Httpd_設置 的設置.png

圖2. Httpd_設置 的設置。

 

※ url 網址輸入說明:在網址欄輸入的網址是否能成功連線,甚至是輸出內容在網頁上,要看【Httpd_設置】所設置的值,若以上圖為例,之後要成功連線到【Httpd_設置】設定的 server 的話,其網址輸入欄為 “127.0.0.1:8000/” 。

※【Httpd_設置】的根目錄欄位:可能會影響【Httpd_寫入檔案】函式的檔案讀取。

 

【Httpd_開始】:開啟【Httpd_設置】設置的 server。

參數欄位:

  • 結果:輸出是否成功開啟 server。

回傳結果值為 -1,未選擇已初始化過的 Httpd 物件;

回傳結果值為 1,成功開啟 server。

  • Httpd 物件:選擇已【Httpd_設置】設置過的 Httpd 物件。

 

 

 

【Httpd_取得 URL】:在要連接的url 中,取得  "port/" 後面的字串。

參數欄位:

  • Httpd 物件:選擇已【Httpd_設置】設置過的 Httpd 物件。
  • 結果:輸出是否成功取得指定 port 的 url。

回傳結果值為 -1,未選擇已初始化過的 Httpd 物件或未有連線到指定 port 的 url;

回傳結果值為 1,有連線到指定 port 的 url。

  • 輸出字串:要連接的url 中,取得  "port/" 後面的字串。

範例:

執行圖3的左邊流程,在瀏覽器輸入 “127.0.0.1:8000/test.html” ,【Httpd_取得 URL】即可取得 port (8000) 後的 URL “test.html” 。

※這裡加入【睡眠】函式只是為了有緩衝時間輸入網址,使用者可自行更換,不一定要【睡眠】函式,可以加在【Httpd_讀取】後面之類的。

※如果要印出【Httpd_取得 URL】取得的 URL 的話,請記得在【列印單行】的字串欄位選擇【Httpd_取得 URL】輸出的字串。

 

圖3. 如何取得 URL.png

圖3. 如何取得 URL。

 

【Httpd_讀取】:讀取連線到指定 port 的 url。

參數欄位:

  • Httpd 物件:選擇已【Httpd_設置】設置過的 Httpd 物件。
  • 結果:輸出讀取到內容是否成功。

回傳結果值為 -1,未選擇已初始化過的 Httpd 物件;

回傳結果值為 1,成功讀取連線到指定 port 的 url 內容。

範例:

執行圖4的流程,在瀏覽器輸入 “127.0.0.1:8000/test.html” ,【Httpd_讀取】會取得 URL (網址)。

 

圖4. Httpd_讀取 .png

圖4. Httpd_讀取 。

 

【Httpd_寫入】:寫入連線到指定 port 的 url 內容。

參數欄位:

  • Httpd 物件:選擇已【Httpd_設置】設置過的 Httpd 物件。
  • 結果:輸出讀取到內容是否成功。

回傳結果值為 -1,未選擇已初始化過的 Httpd 物件;

回傳結果值為 1,成功寫入連線到指定 port 的 url 內容。

  • 字串:顯示在【Httpd_讀取】讀取到的 url 內容。

範例:

執行圖5的流程,在瀏覽器輸入 “127.0.0.1:8000/test.html” ,【Httpd_寫入】會在網頁顯示字串欄位所填的 “Hello World!!” 。

 

圖5. Httpd_寫入 .png

圖5.【Httpd_寫入】。

 

【Httpd_寫入檔案】:寫入檔案內容到指定的 url。

參數欄位:

  • Httpd 物件:選擇已【Httpd_設置】設置過的 Httpd 物件。

範例:

執行下圖的流程,在瀏覽器輸入 “127.0.0.1:8000/lena.png” 會輸出 lena 影像。

 

圖6. Httpd_寫入檔案 .png

圖6. 【Httpd_寫入檔案】

 

※url 網址輸入說明:在網址欄輸入的網址是否能輸出檔案內容在網頁上,要看【Httpd_設置】設置的根目錄位置決定,假設【Httpd_設置】設置的根目錄位置在桌面,如圖7,若想在網頁上顯示下圖紅框的貓咪 (000242.jpg) ,就必須在網址輸入 “127.0.0.1:8000/000242.jpg”;若想網頁上顯示下圖 OpenCV 資料夾裡面的貓咪影像,則在網址欄則輸入 “127.0.0.1:8000/OpenCV/000242.jpg” ,根目錄在別的資料夾時請以此類推。

備註:目前網址不支援輸入非英文、數字外的字符 (空格、+、中文、/......等)。

 

圖7. Httpd_設置 設置的根目錄位置範例.png

圖7. 【Httpd_設置】設置的根目錄位置範例。

 

【Httpd_停止】:關閉連線。

參數欄位:

  • 結果:輸出是否成功關閉連線。

回傳結果值為 -1,未選擇要關閉連線的 Httpd 物件;

回傳結果值為 1,成功關閉連線。

  • Httpd 物件:選擇要關閉連線的 Httpd 物件。

 

【Httpd_取得字串】:取得指定 key 的字串內容。

參數欄位:

  • Httpd 物件:選擇已【Httpd_設置】設置過的 Httpd 物件。
  • 結果:輸出設置是否成功。

回傳結果值為 -1,未選擇已初始化過的 Httpd 物件;

回傳結果值為 -3,key 名稱的欄位為空值;

回傳結果值為 -4,key 名稱的欄位其值不存在;

回傳結果值為 1,成功取得指定 key 的字串。

  • 輸出字串:輸出指定 key 的字串。
  • key 名稱:輸入想輸出該 key 值字串的名稱。

範例:

執行圖8的流程,在瀏覽器輸入 “127.0.0.1:8000/test.html?string1=123&string2=456&string3=789” ,在命令提示字元印出 string2 post 的內容 (456) 。

※key 名稱說明:如下圖,假設 key 的值填 “string2” ,他就會找 string2 post 的值。

 

圖8. Httpd_取得字串 範例.png

圖8. 【Httpd_取得字串】範例。

 

【Httpd_取得二元資料】:取得指定 key 的二元資料。

參數欄位:

  • Httpd 物件:選擇已【Httpd_設置】設置過的 Httpd 物件。
  • 結果:輸出設置是否成功。

回傳結果值為 -1,未選擇已初始化過的 Httpd 物件;

回傳結果值為 -3,key 名稱的欄位為空值;

回傳結果值為 -4,key 名稱的欄位其值不存在;

回傳結果值為 1,成功取得指定 key 的二元資料。

  • 二元資料:輸出指定 key 的二元資料。
  • key 名稱:輸入想輸出該 key 值二元資料的名稱。

※【Httpd_取得二元資料】與【Httpd_取得字串】功能差別在一個取得的是二元資料 (binary),另一個則是取得字串 (string)。

 

【Httpd_WriteImage】:發送影像給 client 端。

參數欄位:

  • Httpd 物件:選擇已【Httpd_設置】設置過的 Httpd 物件。
  • 結果:發送影像是否成功。

回傳結果值為 -1,未選擇已初始化過的 Httpd 物件;

回傳結果值為 1,成功發送影像。

  • 影像:要傳送的影像。

 

【Httpd_HttpGetImage】:取得影像 (透過 CURL 指令)。

參數欄位:

  • 影像:取得的影像。
  • serverURL:輸入 URL。
  • imageW:影像的寬度。
  • imageH:影像的高度。

 

 【Httpd_HttpGetString】:取得字串 (透過 CURL 指令)。

參數欄位:

  • 回傳字串:取得回傳的字串。
  • serverURL:輸入 URL。
標籤:

延伸閱讀

1.
OpenR8 社群版 - 人人都會用的 AI 軟體 (免費下載)

[CP 值最好的 AI 人工智慧電腦熱賣中]
硬體採用最新最快的 Titan RTX, RTX-2080Ti-11G, 及 TESLA V100!
視窗圖控介面,易學易用。
硬體優勢:針對深度學習最佳化設計,且經過客戶端 24H 運作驗證。
軟體優勢:事先安裝人工智慧軟體及優化設定,每週提供最新 AI 演算法下載。
公司優勢:專業人工智慧機器人設計公司,資本額一億。
歡迎企業、學校、及公家機關大量採購。
可租用,歡迎來信或來電洽詢。
詳細資料請參閱以下網址: https://tw.openrobot.club/ai_computer