C ++ Client / Nodejs Server发送POST二进制数据

时间:2018-01-31 21:16:56

标签: c++ node.js curl libcurl

我有一个C ++客户端和一个Nodejs服务器。我想通过POST发送二进制数据(十六进制字符串)。我正在努力试图了解这里的问题。 问题:我每次都在服务器上使用所有相同字节的缓冲区。无论发送什么。

我想我没有以正确的方式处理服务器上的Buffer。 请注意bodyParser.raw的用法,我不确定。 这是客户端发送数据的一部分:

//http POST request
int Remote::postRequest(const char *socket, char *content) {
    CURL *curl;
    CURLcode res;
    curl_global_init(CURL_GLOBAL_ALL);
    curl = curl_easy_init();
    if (curl) {
        struct curl_slist *headers = NULL;
        headers = curl_slist_append(headers, "Accept: */*");
        headers = curl_slist_append(headers, "Content-Type: application/octet-stream");
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
        curl_easy_setopt(curl, CURLOPT_URL, socket);
        curl_easy_setopt(curl, CURLOPT_POST, 1);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, content);
        res = curl_easy_perform(curl);                                                                                    
        if (res != CURLE_OK)
            fprintf(stderr, "curl_easy_perform() failed: %s\n",
                curl_easy_strerror(res));
        curl_easy_cleanup(curl);
    }
    curl_global_cleanup();
    return 0;
}

这是服务器

const app = require('express')(),
app
    .use(bodyParser.raw({type: 'application/octet-stream'}))
    .post('/', (req, res) => {
        console.log('body: ',req.body);
        console.log('binToHex: ',new Buffer(req.body.toString('hex'),'binary'));
        console.log('bin: ', Buffer(req.body,'binary'))
        res.send("ok")  
    }).listen(3000, () => console.info('listening on port 3000..'))

这就是服务器打印无论我发送什么

body:  <Buffer cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc>
binToHex:  <Buffer 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 ... >
bin:  <Buffer cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc>

0 个答案:

没有答案