校園網 openwrt記(四)Lua傳送udp包

2021-07-10 05:53:36 字數 1222 閱讀 7367

由於openwrt的web管理介面luci的後台完全由lua寫的,標準的lua庫是不足以完成這個任務的,需要擴充套件其他庫來完成,所以openwrt的lua的目標目錄下(一般為/usr/lib/lua)會有乙個nixio.so動態鏈結庫,許多擴充套件可以從該庫。鑑於lua指令碼可以很容易的被c/c++ **呼叫,也可以反過來呼叫c/c++的函式,這使得lua在應用程式中可以被廣泛應用。

nixio中有許多擴充套件的方法,其中有bit庫,socket庫,tls庫,crypto庫,file庫等等。詳情可以看luci在github上的wiki關於nixio的api當然最好是git clone下來好好看一下原始碼。

本應用要使用socket,從nixio中匯出socket是一種方法,還有一種方法是用opkg包管理工具安裝luasocket擴充套件包,這個擴充套件包比nixio的socket更為豐富,也更大。

我這裡只是簡單傳送udp包,並且想盡可能的保留路由上有限的儲存,所以使用前者:

socket = require

"nixio".socket

--返回的socket是乙個生成socket類的建構函式

這時就可以用socket函式來生成socket例項了:

sock = socket("inet", "dgram")             --udp

tcp_sock = socket("inet", "stream") --tcp

然後可以可選地使用setopt成員函式去設定socket的option,這裡簡單地設定其可重用so_reuseaddr為true和接收超時為3s:

sock:setopt("socket", "reuseaddr", 1)

sock:setopt("socket", "rcvtimeo", 3)

傳送udp包可以使用sentto:

sock:sendto("hello world!", "8.8.8.8", 12345)  --返回傳送的位元組數
接收可以使用recvfrom:

msg, _, _ =sock:recvfrom(5)  --返回1.接收的資料;2.傳送方的ip;3.傳送方的埠
其他更多的操作詳見luci在github上的document。

至此,整個應用所需要的網路支援都已經具備,只需要構造好udp包,就可以傳送到校園伺服器,獲取撥號許可權了。

校園網 openwrt記(十)iproute2

在新增靜態路由的時候,可以有兩種方法,老式命令route add和新的ip route add route add 192.168.66.0 mask 255.255.255.0 192.168.66.254 or ip route add 192.168.66.0 24 via 192.168.6...

Openwrt筆記 1 校園網連線

在校園裡使用路由器,開發高階功能,首先遇到的問題就是校園網的連線問題 經過一段摸索基本上找到了一些方法,暫記於此 未完待續 0.名詞解釋 h3c 華三通 華三 新華三 公司,系 華為 與 3com 公司合辦的通訊裝置公司,在國內較為普及,尤其是在教育網中應用比較廣 全套裝置 影響巨大。後因一些原因沒...

openwrt之校園網IPV6無線配置

自從openwrt與lede分支合併後,openwrt最新版18.06本支援了ipv6,韌體鏈結,這裡使用widora出品的neo路由器開發板測試 修改配置檔案 etc config network,其實這個配置就是widora官方韌體的預設配置 config inte ce loopback op...