ONVIF 修改ipc接口地址

本文详细介绍了如何使用ONVIF C版库函数修改IPC设备的网络接口IP地址,强调了获取interface token参数的重要性,并提供了测试结果显示修改过程及结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ONVIF 修改ipc接口地址

本文的目的是如何通过onvif 提供的c版库函数获取和修改接口的ip地址信息。网上对这块的介绍比较少,设置ip地址是一个比较基础的功能,通过实际调试发现,主要是结构体参数的初始化比较复杂,需要好好理解。

修改ONVIF IPC 网络接口ip地址方法

  1. 通过调用soap_call___tds__GetNetworkInterfaces接口获取配置所需的interface token参数。
  2. 调用soap_call___tds__SetNetworkInterfaces设置接口ip地址,其中有几个点需要注意。
#define IPC_USERNAME		"admin"
#define IPC_PASSWORD		"admin"
#define SOAP_SOCK_TIMEOUT	(10)

struct soap *onvif_soap_new(int timeout)
{
   
	struct soap *soap = NULL;

	soap = soap_new();
	SYS_CHECK_PTR_RET(soap, ONVIF_ERROR, NULL);

	//设置soap的namespaces
	soap_set_namespaces(soap, namespaces);
	soap->recv_timeout 		= timeout;
	soap->send_timeout 		= timeout;
	soap->connect_timeout 	= timeout;

#if defined(__linux__) || defined(__linux)
	soap->socket_flags = MSG_NOSIGNAL;
#endif

	//设置UTF-8编码方式,否则叠加中文OSD会乱码
	soap_set_mode(soap, SOAP_C_UTFSTRING);

	return soap;
}
/*
* @brief 获取IPC 网络接口配置信息
* @param DeviceXAddr 设备服务地址  例如:**http://192.168.42.4:80/onvif/device_service**
* @return 
* @note  
*/
int onvif_GetNetworkInterface(const char *DeviceXAddr)
{
   
	int iRet = 0;
	struct soap *soap = NULL;
	struct _tds__GetNetworkInterfaces ip_req;
	struct _tds__GetNetworkInterfacesResponse ip_resp;

	/*Sanity check*/
	SYS_CHECK_PTR_RET(DeviceXAddr, ONVIF_ERROR, ERROR);

	soap = onvif_soap_new(SOAP_SOCK_TIMEOUT);
	SYS_CHECK_PTR_RET(soap, ONVIF_ERROR, ERROR);

	/*鉴权*/
	onvif_SetAuthInfo(soap, IPC_USERNAME, IPC_PASSWORD);
	
	memset(&ip_req, 0x0, sizeof(ip_req));
	memset(&ip_resp, 0x0, sizeof(ip_resp));

	iRet = soap_call___tds__GetNetworkInterfaces(soap, DeviceXAddr, NULL, &ip_req, &ip_resp);
	if(soap->error)
	{
   
		ONVIF_ERROR("soap error:%d %s %s\n", soap->error, *soap_faultcode(soap), *soap_faultstring(soap));
	}
	else
	{
   		
		dump_tds__GetNetworkInterfaces(&ip_resp);
	}

	onvif_soap_safe_delete(soap);
	return iRet;	
}

测试结果:
下面是实际的测试结果,主要是为了获取interface token参数,测试的ipc的interface token和interface name是相同的,也有两者是不相同,以实际测试结果为准。


                
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值