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

标签 unix command-line curl libcurl

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

例如

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/

相关文章:

php - 在vBulletin中使用curl登录网站

python - "No child processes"on os.waitpid

command-line - 如何使用介子设置基本选项?

api - 谷歌音乐 API : how to request the next 1000 songs?

MySQL 命令不适用于 Windows CMD

command-line - 从命令行(无 GUI)检查远程桌面/RDP 凭据

python - 在 Python3 中解析 JSON 响应

unix - 在 Unix 中没有临时文件的粘贴

linux - Linux 脚本中 while/case 语句的问题

linux - 解释 shell 脚本代码 "for loop"