天天看点

Go语言实现Onvif客户端:10、获取网关地址及设置网关地址

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设备提供的设备控制能力,通过关键词搜索是否有我们需要的能力,比如我们这里需要的配置网关地址的能力:

获取网关地址:

Go语言实现Onvif客户端:10、获取网关地址及设置网关地址

设置网关地址:

Go语言实现Onvif客户端:10、获取网关地址及设置网关地址

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

4. 最后