Curl 只能读取前 2000 个字节吗?

2024-02-10

我使用了 char URL[]= "file:///d:/temporal/prueba1.txt" 的curl 来测试使用硬盘驱动器文件来测试接收到的数据。

我有以下问题:

  1. 跳过大文件中的前 2 个字符:-已解决-读取数据时出错
  2. 我只想只读一次(最好是前 2000 个字符) 是否存在curl 命令来执行此操作?
  3. 如果我在编写器文件中创建: long longitud=strlen(datain),我得到的经度远大于 size*nmemb
  4. Curl无法穿越企业网络,但URLOpenBlockingStream() + read()可以做到
  5. 有时 Curl 会从 url 读回很多错误数据。我认为发生了连接错误,但我不明白

这就是程序。 (注:pull_one_url()是通过线程调用的):

static void *pull_one_url(void *ii){
ix_bloque=initialize();
     lee_curl_c *lee_curl;//Curl class
CURL *curl; 
CURLcode result; 
curl = curl_easy_init(); // Create our curl handle 
char errorBuffer[CURL_ERROR_SIZE]=""; 
char user_agent[]="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)";
// Write all expected data in here 

if (curl) 
{ 
    curl_easy_setopt(curl, CURLOPT_USERAGENT,user_agent);
    curl_easy_setopt(curl, CURLOPT_PORT, PC_PORT_a); // Check this before using 
    curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errorBuffer); 
    curl_easy_setopt(curl, CURLOPT_URL, lee_curl->url[ix_bloque]); 
    curl_easy_setopt(curl, CURLOPT_HEADER, 0); 
    curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, D_TIMEOUT);//240 segundos
    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 0);//SOLO primer http, ignorar sucesivos
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &writer); 
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, lee_curl->buffer[ix_bloque]); 
    curl_easy_setopt(curl, CURLOPT_VERBOSE, VERBOSE_url);//Para ver que esta pasando
    // Attempt to retrieve the remote page  
    result = curl_easy_perform(curl); 
    if (errorBuffer[0])
    {
        fprintf(stderr, "\n##Tarea %li ERROR EN    %s DEBIDO A: %s",ix_bloque,lee_curl->url[ix_bloque],errorBuffer);
        lee_curl->estado[ix_bloque]=2;//error
    }
    else
    {
        fprintf(stderr, "\n##Tarea %li NO ERROR EN %s          ",ix_bloque,lee_curl->url[ix_bloque]);
        lee_curl->estado[ix_bloque]=1;//Lleno
    }
    // Always cleanup 
    curl_easy_cleanup(curl); 
} 
return NULL;    }

这是编写器函数:

static size_t writer(void *vdata, size_t size, size_t nmemb, void *vbuffer_in){ 
char *datain=(char *) vdata;
char *buffer_in=(char *) vbuffer_in;
nmemb*=size;//No multiplication needed anymore
//long longitud=strlen(datain);//longitud always larger than nmemb 
// Is there anything in the buffer? 
if ( (buffer_in != NULL) && (buffer_in[0]=='\0') ) //CAUTION, reads only if buffer is empty!!!
{ 
    //strcat(buffer_in,data); //SIRVE si el fichero es de mas de 16kb OJO!
    if (nmemb<(D_BUFFER_SIZE-1))
    {
        memcpy(buffer_in,datain,nmemb);
        buffer_in[nmemb]='\0';//end of string
        fprintf(stderr,"\n###SUCCESSFUL, loaded :      %li bytes",nmemb);
    }
    else
    {
        memcpy(buffer_in,data,D_BUFFER_SIZE);
        buffer_in[D_BUFFER_SIZE-1]='\0';//end of string
        fprintf(stderr,"\n###WARNING, trying to load   %li LARGER THAN %li",nmemb,D_BUFFER_SIZE);
        fprintf(stderr," El tamano maximo curl=%li = %likB",CURL_MAX_WRITE_SIZE,CURL_MAX_WRITE_SIZE/1024);
    }
return nmemb; 
} 
return 0;     }

CURLOPT_RANGE 允许您请求文件/资源​​的一部分:

http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTRANGE http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTRANGE

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Curl 只能读取前 2000 个字节吗? 的相关文章

  • 处理右值时的 insert 与 emplace

    std string myString std unordered set
  • 使用多个 WHERE 子句更新 Codeigniter 中的批次

    我查看了 CI 用户指南来了解如何处理update batch 并且它似乎只接受一个索引来匹配要更新的行 但在我的例子中 我需要指定两个索引 例如lang and id page我一起用作索引 这样的lang en id page 115是
  • cpp.react库的C++源代码中奇怪的“->* []”表达式

    这是我在文档中找到的 C 片段cpp react 库 https github com schlangster cpp react implicit parallelism auto in D MakeVar 0 auto op1 in g
  • 如何在 C# Designer.cs 代码中使用常量字符串?

    如何在 designer cs 文件中引用常量字符串 一个直接的答案是在我的 cs 文件中创建一个私有字符串变量 然后编辑 Designer cs 文件以使用此变量 而不是对字符串进行硬编码 但设计者不喜欢这样抛出错误 我明白为什么这行不通
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • Laravel 5 命名约定

    我对 Laravel 约定有点困惑 因为我是这个框架的新手 我正在关注 Jeffrey Way 他使用的 Laracasts 视频Plural对于控制器名称 E g 页面控制器 卡片控制器 帖子控制器 但如果我参考官方文档Laravel g
  • 是否使用 C# 数据集? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对 C 中的数据集概念有点困惑 编码 ASP NET 站点 但这并不重要 在我的阅读中 我了解到它们 本质上 用作我的应用程序和我的
  • 从网页运行 ClickOnce 应用程序,无需用户操作

    我们有一个基于 Java 的 Web 应用程序以及用 C 编写的相同应用程序 如果 java 检查器发现客户端计算机上没有安装 Java 则应该运行该应用程序 这个想法是运行 C 单击一次 http en wikipedia org wik
  • 致命错误 - 未找到“Mongo”类

    我正在尝试执行此操作 但我收到以下错误 致命错误 在 C wamp www 中找不到类 Mongo Info PHP 5 38 MongoDB mongodb win32 i386 2 0 2 MongoDB PHP 驱动程序 mongo
  • 在 .NET MAUI 中实现 TouchTracking

    我一直致力于将我们的应用程序从 Xamarin Forms 迁移到 NET MAUI 我们的应用程序几乎没有绘图功能 用户可以用手指进行绘图 我们用了TouchTrackingXamarin Forms 中的 nuget 包 但与 NET
  • Laravel 4.2 Composer 安装错误:“无法扫描类”

    我想通过 Composer 在新的 Laravel 4 2 安装上安装一些软件包 但是 我遇到了例外 这是我的作曲家文件 name laravel laravel description The Laravel Framework keyw
  • 模板外部链接?谁能解释一下吗?

    模板名称具有链接 3 5 非成员函数模板可以有内部链接 任何其他模板名称应具有外部链接 从具有内部链接的模板生成的实体与在其他翻译单元中生成的所有实体不同 我知道使用关键字的外部链接 extern C EX extern C templat
  • 模板类中的无效数据类型生成编译时错误?

    我正在使用 C 创建一个字符串类 我希望该类仅接受数据类型 char 和 wchar t 并且我希望编译器在编译时使用 error 捕获任何无效数据类型 我不喜欢使用assert 我怎样才能做到这一点 您可以使用静态断言 促进提供一个 ht
  • Visual Studio 2015:v120 与 v140?

    仅供参考 Win10 x64 我今天开始尝试 Visual Studio 2015 在弄清楚如何运行 C C 部分后 我尝试加载一个大型个人项目 该项目使用非官方的glsdk http glsdk sourceforge net docs
  • 将 Lambda 表达式树与 IEnumerable 结合使用

    我一直在尝试了解有关使用 Lamba 表达式树的更多信息 因此我创建了一个简单的示例 这是代码 如果作为 C 程序粘贴到 LINQPad 中 它可以工作 void Main IEnumerable
  • EntityFramework 6.0.0.0 读取数据,但不插入

    我创建了一个基于服务的数据库 folderName gt Add New Item gt Data gt Service based Database文件到 WPF 应用程序中 然后我用过Database First方法并创建了Person
  • 如何在 sql azure 上运行 aspnet_regsql? [复制]

    这个问题在这里已经有答案了 可能的重复 将 ASP NET 成员资格数据库迁移到 SQL Azure https stackoverflow com questions 10140774 migrating asp net membersh
  • 无法将字符串文字分配给装箱的 std::string 向量

    这是我的类型系统的简化版本 include
  • 为什么空循环使用如此多的处理器时间?

    如果我的代码中有一个空的 while 循环 例如 while true 它将把处理器的使用率提高到大约 25 但是 如果我执行以下操作 while true Sleep 1 它只会使用大约1 那么这是为什么呢 更新 感谢所有精彩的回复 但我
  • 无法将句子插入数据库

    我有一些句子 我必须选择由 6 个以上单词组成的句子 然后它们将被插入到数据库中

随机推荐

  • 访问类方法内的变量

    我正在使用 Tkinter Python 创建一个预算程序 这是我的代码的基础知识 class Expense def init self def Save self TotalAmount blah 所以我需要访问TotalAmount在
  • Maven 隐式“提供”依赖项未显示在“依赖项:树”中

    一位同事正在尝试建立一个新的 Spring 项目 该项目明确依赖于 spring security 而 spring security 又 隐式 依赖于 wss4j 在运行测试时 他遇到了缺少类的问题 我们已将缺失的类跟踪到 axis sa
  • 我应该使用 ASP:Label 标记吗?

    我正在 ASP NET 中构建一个表单来发送电子邮件 到目前为止 一切进展顺利 我能够将 ASP TextBox 内容传递到电子邮件 没有任何问题 现在 我的做法是将静态文本作为 TB 标签放入 然后使用 TB 控件作为输入 我应该使用 A
  • 无法锁定 DLL 上的 c++ 11 std::mutex [重复]

    这个问题在这里已经有答案了 我试图通过使用 std lock 对象来防止多次调用 DLL 初始化函数 在独立程序上使用这样的程序时 include
  • 对数据集的一部分进行多项式拟合的算法

    我有一个算法问题 我不知道 stackoverflow 是否是发布它的正确位置 但由于我使用 matlab 并且想用它来完成此操作 所以我将其发布在那里 我的问题如下 我有一组数据 除了在这组数据的末尾 这些点必须非常线性之外 我对此了解不
  • 使用 aiohttp 嵌套“异步”

    我想创建一个使用 aiohttp 进行 API 调用的调度程序类 我试过这个 import asyncio import aiohttp class MySession def init self self session None asy
  • TextInputEditText:ArgumentNullException:MvxWeakEventSubscription 中缺少源事件信息

    突然 我的 TextInputEditText 的绑定开始失败 这与链接器有关 如果我将链接器设置为 无 则一切都会按预期进行 我使用的许多其他绑定仍然可以正常工作 我得到的堆栈 视图绑定期间抛出异常 ArgumentNullExcepti
  • 在背景中捕捉图像?

    我试图在不加载相机或预览界面的情况下从相机捕获背景图像 在我的应用程序中 照片是在后台拍摄的 没有预览屏幕 只有普通的应用程序屏幕 然后稍后显示给用户 有人可以指出我正确的方向吗 您必须使用 AVCaptureSession 和 AVCap
  • 访问 RadioButton 并在 Espresso 中选择它

    我正在使用 Espresso 来测试 Android 应用程序 我在尝试找到一种方法来访问和选择当前活动的RadioButton 属于RadioGroup 时遇到麻烦 有没有人有什么建议 给出以下布局
  • 如何处理 mod_rewrite 中查询字符串中的“#”?

    I asked 这个问题 https stackoverflow com questions 1640977 how to redirect old ugly urls to seo friendly ones关于将旧的 丑陋 链接重写为搜
  • Java Servlet/Jsp 图像上传以及表单值[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一个 jsp 表单 它接受有关员
  • 全局变量没有全局作用域

    supposedlyGlobalVariable blah ARoutine localVariable asdf MsgBox The global variable value is supposedlyGlobalVariable T
  • 访问 Bamboo 秘密/密码变量?

    我的团队有一些旧的竹子管道 其中秘密和密码在竹子变量中配置 并用竹子掩盖这些值 现在没有人知道密码 也没有记录下来 有什么方法可以访问 打印并查看bamboo 秘密 密码 变量中的值吗 读取秘密变量有一个技巧 创建包含内容的脚本任务 ech
  • 按条件对行进行分组

    我有这个数据 Start End Quantity 425 449 24 450 474 24 475 499 24 500 524 24 2300 2324 24 2400 2499 99 2500 2599 99 2800 2899 9
  • Mongoose:将 addToSet 与 ObjectIds 一起使用会产生孤立 ID

    我在使用 mongoDB addToSet 到一个充满对象 Id 的数组时遇到了一个相当有趣的问题 在我的猫鼬模式 Happening 中 我声明了一个名为 expected 的 ObjecId 数组 供 populate 使用 expec
  • 在 .Net Core 3.1 中使用 NewtonSoft 将 DataTable 转换为 JSON 字符串时,如何获得不带“\u0022”或“\”等字符的 JSON 字符串[重复]

    这个问题在这里已经有答案了 我正在 net core 3 1 中编写一个简单的 API 要将我的 DataTable 转换为 JSON 字符串 我使用 NewtonSoft 库和以下代码 string JSONresult JsonConv
  • 保护 JavaScript Web 应用程序/游戏的方法有哪些?

    背景故事 我计划实现一款休闲游戏 部署在网络应用程序中 但我不想使用 Flash 而只是使用普通的 Javascript 我想要的 Flash 的一个好处是 它分发二进制文件而不是源代码 因此更容易保护您的代码不被其他人重用 窃取 或者防止
  • 如何用 Python 编写 Web 代理

    我正在尝试用 python 编写一个网络代理 目标是访问如下网址 http proxyurl http anothersite com 并查看内容http anothersite com就像平常一样 通过滥用 requests 库 我已经取
  • Excel 一组选项中的随机数

    在 MS Excel 中 如何随机计算一组 5 个选项中的一个数字 例如 在单元格 B1 中 我想要一个随机数 即 15 30 50 75 或 100 我想要在单元格 B1 B100 中完全随机输出这 5 个数字 我想我可以使用 rand
  • Curl 只能读取前 2000 个字节吗?

    我使用了 char URL file d temporal prueba1 txt 的curl 来测试使用硬盘驱动器文件来测试接收到的数据 我有以下问题 跳过大文件中的前 2 个字符 已解决 读取数据时出错 我只想只读一次 最好是前 200