如何让 libcurl 不监听套接字只是通过它发送一个 url 请求?

     2023-02-16     94

关键词:

【中文标题】如何让 libcurl 不监听套接字只是通过它发送一个 url 请求?【英文标题】:How to ask libcurl not to listen on a socket just send a url request over it? 【发布时间】:2012-08-18 18:33:13 【问题描述】:

我有一个自己管理套接字连接的客户端(实际上使用libeventbufferevent)。现在,我想使用 libcurl 在该套接字上生成和发送 HTML GET 请求。我通过使用OPENSOCKET_FUNCTION 选项提供libcurl 来完成这部分,我已经打开的套接字。

但我现在的问题是 libeventlibcurl 都在监听套接字,有时是 libevent 在套接字有数据时响应套接字,有时是 libcurl

有没有办法告诉 libcurl 只生成并发送 GET 请求的 url,而不是在套接字上监听,这样我可以在 libcurl 将 url 写入套接字后处理我的问题?

显然,我将curl_multi 接口用于非阻塞套接字,否则curl_easy_perform 在收到答案之前不会返回。

我不想让bufferevent 监听器继续使用libcurl,因为它是一个多协议程序,我正在实现它的http 部分。其他协议没有使用libcurl的奢侈,所以我需要保留bufferevent结构。

【问题讨论】:

【参考方案1】:

您可能正在寻找curl_multi_socket_action() 函数。 curl 在hiperfifo.c 源代码中提供了将该函数与 libevent 一起使用的示例。

【讨论】:

我做了以下事情: 1. 仅在创建事件时激活 EV_WRITE:“event* write_url_event = event_new(the_event, the_socket, EV_WRITE, curl_socket_event_cb, arg);" 2.禁用libevent写回调:“bufferevent_disable(conn->buffer, EV_WRITE);” 3. 当事件回调被调用时,我只用 CURL_CSELECT_OUT 调用 curl_multi_socket_action(): "rc = curl_multi_socket_action(curl_multi_handle, fd, CURL_CSELECT_OUT, &curl_running_handle);"我仍然丢失了一些由套接字上的对等方发送的数据包。我从来没有在另一边收到过它们。会不会是 libcurl 的错误? 这不是 libcurl 论坛,详细问题请到 libcurl 列表中提问。它可能是库中的错误,也可能是您的应用程序中的错误。或两者。通用方法仍然如我所描述并记录在案。 很抱歉在接受过程中一蹶不振。它实际上工作得很好。问题是我使用的终端在打印出所有标准错误时并不诚实,因此,我认为我正在丢失数据包。

如何使用zeromq监听和解析特定端口上的udp数据?(代码片段)

...的速率通过UDP转发到端口10[Hz]的编码数据包。如何设置zmq套接字/服务器/等..这样我可以接收和解码传入的数据?我在linux机器上运行Ubuntu16.04更新+答案:正如@tadman所述,ZMQ不会监听通用UDP数据包。因此,考虑到我无法修改发送... 查看详情

读取整个文件并通过套接字发送

】读取整个文件并通过套接字发送【英文标题】:Readthewholefileandsenditviasockets【发布时间】:2013-03-0215:38:15【问题描述】:我创建了一个应该传输文件的服务器和客户端。我试图让它读取整个文件并发送它。但现在我看到了,我... 查看详情

通过套接字编程发送图像文件(jpeg、png)的提示/示例?

】通过套接字编程发送图像文件(jpeg、png)的提示/示例?【英文标题】:Tips/ExamplesonsendinganImagefile(jpeg,png)oversocketprogramming?【发布时间】:2009-11-2910:10:43【问题描述】:我听说我们可以通过套接字发送带有二进制文件的图像文... 查看详情

我如何判断我是不是仍在监听 Android 中的套接字

】我如何判断我是不是仍在监听Android中的套接字【英文标题】:HowcanItellifI\'mstilllisteningonasocketinAndroid我如何判断我是否仍在监听Android中的套接字【发布时间】:2017-10-1813:28:25【问题描述】:我负责Android设备上的一些代码,它... 查看详情

如何通过套接字发送/接收二进制数据?

】如何通过套接字发送/接收二进制数据?【英文标题】:Howtosend/receivebinarydatathroughsockets?【发布时间】:2013-04-0921:08:13【问题描述】:我必须编写一个FTP服务器,但我对如何传输数据有疑问。我在linux上使用ftp命令来测试它,我... 查看详情

如何在接收响应时通过 websocket 发送请求

...【问题描述】:我正在开展一个项目,该项目涉及通过Web套接字从API发送请求和获取响应。当我向API发送“订阅”请求时,API将不断地通过Web套接字发送响应,我需要在循环中调用websocket.recv()来监听响 查看详情

如何通过套接字发送输入?

】如何通过套接字发送输入?【英文标题】:HowdoIsendaninputthrusocket?【发布时间】:2021-09-1500:26:00【问题描述】:我想做一个基于pysocket的信使,在我尝试我的代码之前一切都很好:它显示了这个错误:TypeError:abytes-likeobjectisrequire... 查看详情

Java 进程间通信

...正在运行的java应用程序发送命令,现在我正在使用tcp/ip套接字通过InternetExplorer上下文菜单项向应用程序发送命令。但是一旦应用程序启动,病毒扫描程序就会抱怨应用程序开始监听,尽管我只是在监听本地连接。我认为这可能... 查看详情

如何每隔一定时间无限次通过套接字发送数据?

】如何每隔一定时间无限次通过套接字发送数据?【英文标题】:HowcanIgetdatatobesentoversocketsinfinitelyeverycertainamountoftime?【发布时间】:2021-12-1013:56:53【问题描述】:我正在使用套接字从客户端向我的服务器发送数据。我遇到的问... 查看详情

如何通过c中的套接字发送二进制数据?

】如何通过c中的套接字发送二进制数据?【英文标题】:howtosendbinarydatathroughsocketinc?【发布时间】:2020-09-0803:54:59【问题描述】:我正在尝试向客户端发送二进制数据,我正在尝试做的是:write(client_fd,"0xf",size,flag)。我... 查看详情

Python 通过套接字发送命令

】Python通过套接字发送命令【英文标题】:Pythonsendingcommandoverasocket【发布时间】:2011-02-1321:40:44【问题描述】:我遇到了一些麻烦。我想创建一个连接到服务器并使用子进程执行命令然后将结果返回给客户端的简单程序。这很... 查看详情

如何使用java中的套接字通道通过网络发送文件

】如何使用java中的套接字通道通过网络发送文件【英文标题】:Howtosendafileoveranetworkusingsocketchannelinjava【发布时间】:2010-11-0622:11:45【问题描述】:我想编写一个套接字通道程序,使用它可以将文件从客户端程序发送到服务器程... 查看详情

通过套接字发送pil图像而不保存python

】通过套接字发送pil图像而不保存python【英文标题】:sendpilimagethroughsocketwithoutsavingpython【发布时间】:2016-05-2118:35:22【问题描述】:我正在通过PILopenload()函数加载图像并更改像素。然后我必须通过套接字将其发送给客户端。在... 查看详情

使用 C 中的套接字通过 TCP 发送音频文件

】使用C中的套接字通过TCP发送音频文件【英文标题】:SendinganaudiofileoverTCPusingsocketsinC【发布时间】:2020-11-2621:23:42【问题描述】:发送一个普通的.txt文件可以正常工作。但是如果我尝试发送一个.wav文件,生成的输出文件只是... 查看详情

通过 Java 中的套接字发送打印机命令

】通过Java中的套接字发送打印机命令【英文标题】:SendprintercommandsviasocketinJava【发布时间】:2015-04-0613:50:50【问题描述】:我正在尝试通过套接字向卡片打印机发送命令,但我无法使其工作。现在,我有一个用php开发的程序,... 查看详情

在不相关的进程之间共享套接字(监听)

】在不相关的进程之间共享套接字(监听)【英文标题】:Sharesocket(listen)betweenunrelatedprocesses【发布时间】:2017-01-1904:02:09【问题描述】:在Linux3.9内核及更高版本中运行,我有一个应用程序X,它在特定套接字上侦听连接。我想... 查看详情

通过套接字发送 Python 对象

】通过套接字发送Python对象【英文标题】:SendingPythonobjectthroughthsocket【发布时间】:2022-01-1520:22:35【问题描述】:我有一个问题,然后通过套接字发送列表,它必须是类似字节的对象,我可以转换它字符串然后做.encode("utf-8&... 查看详情

序列化包含字符串的类,通过套接字通过网络发送它?

】序列化包含字符串的类,通过套接字通过网络发送它?【英文标题】:Serializingaclassthatcontainsastring,tosenditoveranetworkthroughasocket?【发布时间】:2019-06-3013:21:30【问题描述】:我正在尝试使用winsock库,通过创建一个非常简单的服... 查看详情