Go語言實作Onvif用戶端:10、擷取網關位址及設定網關位址
文章目錄
- Go語言實作Onvif用戶端:10、擷取網關位址及設定網關位址
- 1. 前言
- 2. 确認onvif裝置提供的能力
- 3. 部分代碼
- 4. 最後
1. 前言
之前第4節配置網絡資訊中開源庫中通過device的能力可以配置ip位址,但是沒有設定網關位址,實際配置過程中往往是ip位址和網關一起配置的,是以算是漏掉了這部分内容,這裡補充一下,順便說一下我們如何檢視onvif标準裝置提供的裝置能力。
2. 确認onvif裝置提供的能力
http://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl
通過上述的wsdl檔案(相當于c/c++中的接口庫頭檔案,我們通過頭檔案可以知道該庫提供哪些接口)我們可以确認标準onvif裝置提供的裝置控制能力,通過關鍵詞搜尋是否有我們需要的能力,比如我們這裡需要的配置網關位址的能力:
擷取網關位址:
設定網關位址:
3. 部分代碼
那麼增加接口進行網關位址擷取和設定即可:
func (client *GoOnvifClient) getGateWayAddress() ReturnInfo {
getGateWayAddressReq := device.GetNetworkDefaultGateway{}
res := client.sendReqGetResp(GetGateWayAddressErr, getGateWayAddressReq)
return res
}
func (client *GoOnvifClient) setGateWayAddress() ReturnInfo {
setGateWayAddressReq := device.SetNetworkDefaultGateway{
IPv4Address: onvif.IPv4Address(client.netWorkConfigInfo.IPV4GateWayAddress),
IPv6Address: onvif.IPv6Address(client.netWorkConfigInfo.IPV6GateWayAddress),
}
res := client.sendReqGetResp(ConfigGateWayAddressErr, setGateWayAddressReq)
return res
}
res, err = client.GetGateWayAddress()
fmt.Println(res)
//設定網絡資訊
networkInfo := &onvifClient.NetWorkConfigInfo{
EnableIPV4NetworkConfig: true,
IPV4Address: "40.40.40.101",
IPV4PrefixLen: 24,
EnableIPV6NetworkConfig: false,
IPV6Address: "",
IPV6PrefixLen: 120,
IPV4GateWayAddress: "40.40.40.100",
}
res, err = client.ConfigNetWork(networkInfo)
if err != nil {
logger.Error(res)
} else {
fmt.Println(networkInfo.IPV4Address)
}