1.官网下载curl源码并解压
2.进入解压目录 指定编译器及启用websockets
./configure --without-ssl --enable-websockets CC=arm-arago-linux-gnueabi-gcc --host=arm-arago-linux
(这里遇到一个坑,host一开始填成arm,导致无法生成动态库)
3. make
初始化
m_curl = curl_easy_init();
//m_mediaURL填ws接口地址如 ws://xxxx.xxxx.net:8080/BlService
curl_easy_setopt(m_curl, CURLOPT_URL, m_mediaURL);
// Set other options as needed (e.g. TLS/HTTPS options)
curl_easy_setopt(m_curl, CURLOPT_TIMEOUT_MS, 3000);
// Perform a regular transfer with CONNECT_ONLY set to enable WebSocket mode
//注意要使用websocket模式时这里要填2
curl_easy_setopt(m_curl, CURLOPT_CONNECT_ONLY, (long)2);
CURLcode res;
res = curl_easy_perform(m_curl);
if(res == CURLE_OK) {
TraceLog(LOG_INFO,MODU_APP_OAM,"Connected to WebSocket server\n");
return G_RET_SUCC;
}
else
{
TraceLog(LOG_INFO,MODU_APP_OAM,"Connect to WebSocket server failed\n");
curl_easy_cleanup(m_curl);
m_curl = NULL;
return G_RET_FAIL;
}
收发
char cmdBuf[256] = {0};
snprintf(cmdBuf, sizeof(cmdBuf), "{ \"tags\": [{\"mac\": \"%s\"}] }", tagId);
size_t sended = 0;
CURLcode res = curl_ws_send(m_curl, cmdBuf, strlen(cmdBuf)+1, &sended,0, CURLWS_TEXT);
if (res == CURLE_OK)
{
size_t rlen;
struct curl_ws_frame *meta;
char buffer[2560] = {0};
CURLcode result = curl_ws_recv(m_curl, buffer, sizeof(buffer), &rlen, &meta);
if (result == CURLE_OK)
{
printf("%s\n", buffer);
}
}
else
{
//
}
=====================================================
又:在windows下编译可使用CMAKE-GUI生成VC project