基本上我有一个打开套接字的应用程序。
例如
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/