--以下是用Libcurl获取指定url文件version.txt的内容

local ffi = require "ffi"

ffi.cdef[[
void *curl_easy_init();
int curl_easy_setopt(void *curl, int option, ...);
int curl_easy_perform(void *curl);
void curl_easy_cleanup(void *curl);
char *curl_easy_strerror(int code);
int curl_easy_getinfo(void *curl, int info, ...);

typedef unsigned int (*WRITEFUNC)(void *ptr, unsigned int size, unsigned int nmemb, void *userdata);

--]]

local libcurl = ffi.load("libcurl")

local curl = libcurl.curl_easy_init()
if curl then

local version=""

--这是把LUA函数转换成c回调函数
local getVersionCode = ffi.cast("WRITEFUNC", function(ptr,size,nmemb,userdata)
version=version..ffi.string(ptr)
return size*nmemb
end)

libcurl.curl_easy_setopt(curl, CURLOPT_URL, RES_URL.."version.txt")
libcurl.curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0)
libcurl.curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, getVersionCode)
libcurl.curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1)
libcurl.curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 1)
libcurl.curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 5)

local res = libcurl.curl_easy_perform(curl)
if res ~= 0 then
print(ffi.string(libcurl.curl_easy_strerror(res)))
end
libcurl.curl_easy_cleanup(curl)
getVersionCode:free()

remoteVersion=tonumber(version)
end

转载于:https://www.cnblogs.com/amazing-alex/p/4075802.html

使用 luajit的ffi 调用libcurl相关推荐

  1. flutter/dart通过ffi调用rust代码

    ffi简介 FFI(Foreign Function Interface)是用来与其它语言交互的接口,在有些语言里面称为语言绑定(language bindings),Java 里面一般称为 JNI( ...

  2. VC++调用libcurl开源库实现发送邮件的功能(附源码)

    目录 1.为啥要选择libcurl库去实现邮件的发送 2.调用libcurl库的API接口实现邮件发送

  3. Electron通过ffi调用DLL

    第一步建立一个DLL int WINAPI CAM_Open(char *pIn, char* pOut); 第二步安装ffi npm install --save ffi 针对electron版本重 ...

  4. luajit日记-FFI库

    2019独角兽企业重金招聘Python工程师标准>>> LuaJIT FFI LibraryThe FFI library allows calling external C fun ...

  5. vue 调用c++_electron-vue跨平台桌面应用开发实战教程(七)——ffi调用C++(macOS平台)...

    electron功能很强大,但是有一些跟操作系统底层交互的功能,electron无法实现,这个时候我们就可以调用原生来配合完成对应功能,本文主要讲解在macOS平台下,调用C++的dylib文件 在开 ...

  6. openresty通过ffi调用一个c编写的base64动态库

    base64编码的原理 base64不是加密,就是一种编码,将字符串的二进制按6个bit一组,每组的6个bit的形式转换一下. 每组6个bit对应的字符是 有特定的映射表决定. 映射表: 字符 序号 ...

  7. rust 使用 ffi 调用 C 静态链接库

    创建build.rs //build.rs extern crate dunce; use std::{env, path::PathBuf}; fn main() { let library_nam ...

  8. NodeJS通过ffi调用DLL

    第一步建立一个dll, 提供方法如下 int WINAPI CAM_Open(char *pIn, char* pOut); 第二步安装ffi (前提已安装python2.x环境) npm insta ...

  9. 调用libcurl获取https的url文件的大小

    long getDownloadFileLenth(const char *url){double downloadFileLenth = 0;//这里一定要是double类型,如果是long lon ...

最新文章

  1. textarea标签中的换行与空格问题
  2. Spring Boot 内置Tomcat——IntelliJ IDEA中配置模块目录设为文档根目录(DocumentRoot)解决方案
  3. 网站前端性能优化之javascript和css
  4. python pexpect pxssh scp_Python 的 pexpect 使用 scp 把文本文件传一半就不传了,怎么办?...
  5. 深度学习最常用的学习算法:Adam优化算法
  6. DAM的内涵正在改变
  7. 抖音否认封杀腾讯;程序员拒绝带电脑回家被开除,获赔 19.4 万;Excel 具备图灵完备性 | 极客头条...
  8. Solr基础,在Eclipse中运行Solr
  9. Open3d之点云顶点法线估计
  10. linux运维生产场景常用软件工具一览
  11. 带你领略Object.assign()方法的风骚操作
  12. 六自由度机械臂SolidWorks模型转化成urdf文件,添加简单gazebo属性并修改为xacro
  13. Python常用模块 之 re模块
  14. 「Medical Image Analysis」Note on 3D U-Net
  15. 广告代码(弹窗和富媒体)
  16. 【奶奶看了也不会】AI绘画 Mac安装stable-diffusion-webui绘制AI妹子保姆级教程
  17. OpenCV读取图片和保存图片全黑
  18. 多层板交期怎么才能有效把控?
  19. 京剧《断密涧》中李密和王伯当的唱段
  20. hive之反斜杠导致Unicode编码字段里的中文无法正常显示

热门文章

  1. xfce上安装mysql_在Fedora 33/32系统上安装PostgreSQL 13数据库的说明
  2. 20210627:力扣第247周周赛(上)
  3. 直方图均衡 视觉显著_计算机视觉一些项目实战技术(续)
  4. python图像切面numpy_NumPy做图像处理不香吗?我用Python把秋日里最美的景色做成了这种效果~...
  5. 大数据时代下的信息安全
  6. 英语总结系列(十五):别样的三月
  7. 深度学习论文TOP10,2019一季度研究进展大盘点
  8. 2018中国年度AI评选揭晓!10大领航企业,50家明星公司,10佳投资机构
  9. 十个优衣库仓库理货员,只有一个能留下,机器已经上岗了
  10. 自动给神经网络找bug,Google发布TensorFuzz