gpt4 book ai didi

unix - 命令行将curl连接到我的应用程序使用socket()打开的整数套接字

转载 作者:行者123 更新时间:2023-12-02 07:24:58 32 4
gpt4 key购买 nike

基本上我有一个打开套接字的应用程序。

例如

int socket = socket(PF_LOCAL, SOCK_STREAM, 0);

现在我想向该套接字发送一个 HTTP put 请求。我知道我应该使用 libcurl,但我就是无法让它正常工作。所以我想要一种将curl 连接到我的应用程序的方法。

也许是这样的?

curl -X PUT -d @myXmlFile.xml /var/run/myunixsocket

除了使用libcurl就没有别的办法了吗???我无法让它工作,也无法找到它实际写入套接字而不是 URI 的示例。

不用说,HTTP 服务器正在监听该套接字的另一端。

最佳答案

通过添加新的 --unix-socket 选项,您将能够在 cURL 7.40 中使用 UNIX 套接字:

curl -X PUT -d @myXmlFile.xml --unix-socket /var/run/myunixsocket

在幕后,它将使用 CURLOPT_UNIX_SOCKET_PATH libcurl 的选项。如果您想了解如何使用 libcurl 进行编程,请使用 --libcurl 选项:

curl --unix-socket /var/run/myunixsocket http://localhost/ --libcurl example.c

生成的文件example.c将如下所示:

#include <curl/curl.h>

int main(int argc, char *argv[]) {
CURLcode ret;
CURL *hnd;

hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_URL, "http://host/path");
curl_easy_setopt(hnd, CURLOPT_UNIX_SOCKET_PATH, "/var/run/myunixsocket");

ret = curl_easy_perform(hnd);

curl_easy_cleanup(hnd);
hnd = NULL;

return (int)ret;
}

关于unix - 命令行将curl连接到我的应用程序使用socket()打开的整数套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9186834/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com