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)
}