--- /dev/null
+#include <stdio.h>\r
+#include "httpclient.h"\r
+\r
+/* @brief http request buffer */\r
+#define REQ_BUF_SIZE 2048\r
+static char req_buf[REQ_BUF_SIZE];\r
+\r
+/* @brief http response buffer */\r
+#define RSP_BUF_SIZE 2048\r
+static char rsp_buf[RSP_BUF_SIZE] = {0};\r
+\r
+/*http get请求*/\r
+static int http_gettest(void)\r
+{\r
+ HttpClient client = {0};\r
+ HttpClientData client_data = {0};\r
+ char *req_url = "http://www.baidu.com/";\r
+ int ret = -1;\r
+\r
+ memset(req_buf, 0, sizeof(req_buf));\r
+ client_data.headerBuf = req_buf;\r
+ client_data.headerBufLen = sizeof(req_buf);\r
+\r
+ memset(rsp_buf, 0, sizeof(rsp_buf));\r
+ client_data.responseBuf = rsp_buf;\r
+ client_data.responseBufLen = sizeof(rsp_buf);\r
+\r
+ printf("\n http request %s\r\n", req_url);\r
+\r
+ ret = HttpClientGetRequest(&client, req_url, &client_data);\r
+ if (ret >= 0 && client.responseCode == 200) {\r
+ printf("resopnsebuf data: %s \n", client_data.responseBuf);\r
+ printf("headerbuf received: %s \n", client_data.headerBuf);\r
+ printf("responsecode = %d \n", client.responseCode);\r
+ printf("http test_01 success!\n");\r
+ ret = 0;\r
+ } else {\r
+ printf("responsecode = %d \n", client.responseCode);\r
+ printf("http test_01 fail!, ret=0x%x\r\n", ret);\r
+ }\r
+ return ret;\r
+}\r
+\r
+/*http get请求:配置自定义请求头*/\r
+static int http_setheader(void)\r
+{\r
+ HttpClient client = {0};\r
+ HttpClientData client_data = {0};\r
+ char *req_url = "http://www.baidu.com/";\r
+ char *customer_header = "Accept: */*\r\n";\r
+ int ret = -1;\r
+\r
+ memset(req_buf, 0, sizeof(req_buf));\r
+ client_data.headerBuf = req_buf;\r
+ client_data.headerBufLen = sizeof(req_buf);\r
+\r
+ memset(rsp_buf, 0, sizeof(rsp_buf));\r
+ client_data.responseBuf = rsp_buf;\r
+ client_data.responseBufLen = sizeof(rsp_buf);\r
+\r
+ printf("\n http request %s\r\n", req_url);\r
+\r
+ HttpClientSetCustomHeader(&client, customer_header);\r
+ ret = HttpClientGetRequest(&client, req_url, &client_data);\r
+ if (ret >= 0 && client.responseCode == 200) {\r
+ printf("data received: %s \r\n", client_data.responseBuf);\r
+ printf("headerbuf data received: %s \r\n", client_data.headerBuf);\r
+ printf("responsecode = %d \n", client.responseCode);\r
+ printf("http test success!\r\n");\r
+ ret = 0;\r
+ } else {\r
+ printf("responsecode = %d \n", client.responseCode);\r
+ printf("http test fail!, ret=0x%x\r\n", ret);\r
+ }\r
+ return ret;\r
+}\r
+\r
+/*http post请求*/\r
+static int http_posttest(void)\r
+{\r
+ HttpClient client = {0};\r
+ HttpClientData client_data = {0};\r
+ char *req_url = "http://httpbin.org/anything";\r
+ int ret = -1;\r
+\r
+ client_data.postBuf = "{ \"name\": \"xyz\", \"password\": \"111\" }";\r
+ size_t length = strlen(client_data.postBuf);\r
+ client_data.postBufLen = length;\r
+\r
+ memset(req_buf, 0, sizeof(req_buf));\r
+ client_data.headerBuf = req_buf;\r
+ client_data.headerBufLen = sizeof(req_buf);\r
+\r
+ memset(rsp_buf, 0, sizeof(rsp_buf));\r
+ client_data.responseBuf = rsp_buf;\r
+ client_data.responseBufLen= sizeof(rsp_buf);\r
+\r
+ printf("\n http request: %s \r\n", req_url);\r
+\r
+ ret = HttpClientPostRequest(&client, req_url, &client_data);\r
+ if (ret >= 0 && client.responseCode == 200) {\r
+ printf("data received: %s \r\n", client_data.responseBuf);\r
+ printf("headerbuf data received: %s \r\n", client_data.headerBuf);\r
+ printf("responsecode: %d \r\n", client.responseCode);\r
+ printf("http test success!\r\n");\r
+ ret = 0;\r
+ } else {\r
+ printf("responsecode = %d \n", client.responseCode);\r
+ printf("http test failed! ret= 0x%x \r\n", ret);\r
+ }\r
+ return ret;\r
+}\r
+\r
+/*http put请求*/\r
+static int http_puttest(void)\r
+{\r
+ HttpClient client = {0};\r
+ HttpClientData client_data = {0};\r
+ char *req_url = "http://httpbin.org/anything";\r
+ int ret = -1;\r
+\r
+ memset(req_buf, 0, sizeof(req_buf));\r
+ client_data.headerBuf = req_buf;\r
+ client_data.headerBufLen = sizeof(req_buf);\r
+\r
+ memset(rsp_buf, 0, sizeof(rsp_buf));\r
+ client_data.responseBuf = rsp_buf;\r
+ client_data.responseBufLen= sizeof(rsp_buf);\r
+\r
+ printf("\n http request: %s \r\n", req_url);\r
+\r
+ client_data.postBuf = "{ \"name\": \"www\", \"email\": \"111@qq.com\", \"age\": 30 }";\r
+ size_t length = strlen(client_data.postBuf);\r
+ client_data.postBufLen = length;\r
+\r
+ ret = HttpClientPutRequest(&client, req_url, &client_data);\r
+ if (ret >= 0 && client.responseCode == 200) {\r
+ printf("data received: %s \r\n", client_data.responseBuf);\r
+ printf("headerbuf data received: %s \r\n", client_data.headerBuf);\r
+ printf("responsecode: %d \r\n", client.responseCode);\r
+ printf("http test success!\r\n");\r
+ ret = 0;\r
+ } else {\r
+ printf("responsecode = %d \n", client.responseCode);\r
+ printf("http test failed! ret= 0x%x \r\n", ret);\r
+ }\r
+ return ret;\r
+}\r
+\r
+/*http delete请求*/\r
+static int http_deletetest(void)\r
+{\r
+ HttpClient client = {0};\r
+ HttpClientData client_data = {0};\r
+ char *req_url = "http://httpbin.org/anything";\r
+ int ret = -1;\r
+\r
+ memset(req_buf, 0, sizeof(req_buf));\r
+ client_data.headerBuf = req_buf;\r
+ client_data.headerBufLen = sizeof(req_buf);\r
+\r
+ memset(rsp_buf, 0, sizeof(rsp_buf));\r
+ client_data.responseBuf = rsp_buf;\r
+ client_data.responseBufLen = sizeof(rsp_buf);\r
+\r
+ printf("\n http request: %s \r\n", req_url);\r
+\r
+ ret = HttpClientDelete(&client, req_url, &client_data);\r
+ if (ret >= 0 && client.responseCode == 200) {\r
+ printf("data received: %s \r\n", client_data.responseBuf);\r
+ printf("headerbuf data received: %s \r\n", client_data.headerBuf);\r
+ printf("responsecode: %d \r\n", client.responseCode);\r
+ printf("http test success!\r\n");\r
+ ret = 0;\r
+ } else {\r
+ printf("responsecode = %d \n", client.responseCode);\r
+ printf("http test failed! ret= 0x%x \r\n", ret);\r
+ }\r
+ return ret;\r
+}\r
+\r
+/*http get请求下载图片*/\r
+static int http_download(void)\r
+{\r
+ HttpClient client = {0};\r
+ HttpClientData client_data = {0};\r
+ char *req_url = "http://cn.bing.com/rp/Q5BJPjebyYN5QiqznkcMQmLrF9U.svg";\r
+ size_t total_written = 0, file_size = 0;\r
+ int ret = -1;\r
+\r
+ memset(req_buf, 0, sizeof(req_buf));\r
+ client_data.headerBuf = req_buf;\r
+ client_data.headerBufLen = sizeof(req_buf);\r
+\r
+ memset(rsp_buf, 0, sizeof(rsp_buf));\r
+ client_data.responseBuf = rsp_buf;\r
+ client_data.responseBufLen = sizeof(rsp_buf);\r
+\r
+ printf("\n http request: %s \r\n", req_url);\r
+\r
+ FILE *fd = fopen("/user/log/http_test.svg", "wb");\r
+ if (fd == NULL) {\r
+ printf("fopen failed \r\n");\r
+ printf("Error: %s \r\n", strerror(errno));\r
+ return -1;\r
+ }\r
+ \r
+ ret = HttpClientConn(&client, req_url);\r
+ if (ret == 0) {\r
+ ret = HttpClientSend(&client, req_url, HTTP_GET, &client_data);\r
+ if (ret == 0) {\r
+ do {\r
+ ret = HttpClientRecvResponse(&client, &client_data);\r
+ printf("headerbuf : %s \n", client_data.headerBuf);\r
+ if (client_data.contentBlockLen > 0) {\r
+ printf("receive client_data.contentBlockLen= %d \r\n", client_data.contentBlockLen);\r
+ file_size = fwrite(client_data.responseBuf, 1, client_data.contentBlockLen, fd);\r
+ total_written += file_size;\r
+ }\r
+ } while (client_data.isMore);\r
+ if (client_data.responseContentLen == 0) {\r
+ printf("receive length = 0 \n");\r
+ }\r
+ if (total_written == client_data.responseContentLen && client.responseCode == 200 && file_size > 0) {\r
+ ret = 0;\r
+ printf("responsecode = %d \n", client.responseCode);\r
+ printf("The image is downloaded successfully and the data is complete! \n");\r
+ printf("http test success! \n");\r
+ } else {\r
+ printf("responsecode = %d \n", client.responseCode);\r
+ printf("The image data is incomplete! \n");\r
+ printf("http test failed! \n");\r
+ }\r
+ } else {\r
+ printf("responsecode = %d \n", client.responseCode);\r
+ printf("receive failed ret= 0x%x \r\n", ret);\r
+ printf("http test failed! \n");\r
+ }\r
+ }\r
+ fclose(fd);\r
+ HttpClientClose(&client);\r
+ return ret;\r
+}
\ No newline at end of file
--- /dev/null
+#include <stdio.h>\r
+#include <pthread.h>\r
+#include "net_websocket.h"\r
+\r
+int g_recedata_flag = 0;\r
+int clientFd = -1;\r
+const char *g_send_data = NULL;\r
+size_t g_send_data_length = 0;\r
+pthread_mutex_t g_send_data_mutex = PTHREAD_MUTEX_INITIALIZER;\r
+int g_success_count = 0;\r
+int g_failed_count = 0;\r
+\r
+// 回调函数\r
+static void OnOpen(int client) \r
+{\r
+ printf("OnOpen, client=%d\n", client);\r
+ const char *data = "hello";\r
+ int ret = WebSocketClientSendText(client, data, strlen(data));\r
+ if (ret != 0) {\r
+ printf("send fail, ret=%d\n", ret);\r
+ return;\r
+ } else {\r
+ printf("send data success!\n");\r
+ g_send_data = data;\r
+ g_send_data_length = strlen(data);\r
+ }\r
+}\r
+\r
+static void OnMessage(int client, const char *data, size_t length, bool isFinished) \r
+{\r
+ printf("client(%d) onMessage, length=%zu\n", client, length);\r
+\r
+ for (int i = 0; i < length; i++) {\r
+ printf("%c", data[i]);\r
+ }\r
+ printf("\n");\r
+\r
+ pthread_mutex_lock(&g_send_data_mutex);\r
+ if (length == g_send_data_length && memcmp(data, g_send_data, length) == 0) {\r
+ printf("Data received successfully and matches the sent data.\n");\r
+ g_recedata_flag = 1;\r
+ g_success_count++;\r
+ } else {\r
+ printf("Data received does not match the sent data.\n");\r
+ g_failed_count++;\r
+ }\r
+\r
+ if (g_recedata_flag == 1 && g_send_data != NULL) {\r
+ free(g_send_data);\r
+ g_send_data = NULL;\r
+ g_send_data_length = 0;\r
+ }\r
+ pthread_mutex_unlock(&g_send_data_mutex);\r
+}\r
+\r
+static void OnError(int client, struct WebSocketErrorResult error)\r
+{\r
+ printf("OnError,errcode=%d, messg=%s\n", error.errorCode, error.errorMessage);\r
+}\r
+\r
+static void OnClose(int client)\r
+{\r
+ printf("client=%d, OnClose callback\n", client);\r
+}\r
+\r
+// 向服务器发送普通字符数据,长度5字节\r
+int ws_sentdata(void)\r
+{\r
+ int clientFd;\r
+ int ret;\r
+\r
+ const char *url1 = "ws://60.204.230.165:80";\r
+ clientFd = WebSocketClientConstructor(OnOpen, OnMessage, OnError, OnClose);\r
+ if (clientFd < 0) {\r
+ printf("client fd fail=%d\n", clientFd);\r
+ return -1;\r
+ }\r
+\r
+ ret = WebSocketClientConnect(clientFd, url1, NULL);\r
+ if (ret != 0) {\r
+ printf("connect fail\n");\r
+ WebSocketClientClose(clientFd);\r
+ return -1;\r
+ }\r
+ \r
+ while (g_recedata_flag == 0) {\r
+ sleep(1);\r
+ }\r
+\r
+ ret = WebSocketClientClose(clientFd);\r
+ if (ret != 0) {\r
+ printf("close fail, ret=0x%x\n", ret);\r
+ } else {\r
+ printf("close success!");\r
+ }\r
+ g_recedata_flag = 0;\r
+ return 0;\r
+}\r
+\r
+// 创建多个客户端(最大为客户端数量为4个)\r
+int ws_createclient(void)\r
+{\r
+ int clientFd_1, clientFd_2, clientFd_3, clientFd_4;\r
+ int ret1, ret2, ret3, ret4;\r
+\r
+ const char *url = "wss://60.204.230.165:443";\r
+ clientFd_1 = WebSocketClientConstructor(OnOpen, OnMessage, OnError, OnClose);\r
+ clientFd_2 = WebSocketClientConstructor(OnOpen, OnMessage, OnError, OnClose);\r
+ clientFd_3 = WebSocketClientConstructor(OnOpen, OnMessage, OnError, OnClose);\r
+ clientFd_4 = WebSocketClientConstructor(OnOpen, OnMessage, OnError, OnClose);\r
+ if (clientFd_1 < 0 || clientFd_2 < 0 || clientFd_3 < 0 || clientFd_4 < 0) {\r
+ printf("client fd fail clientFd_1=%d, clientFd_2=%d, clientFd_3=%d, clientFd_4=%d\n", clientFd_1, clientFd_2, clientFd_3, clientFd_4);\r
+ return -1;\r
+ }\r
+\r
+ ret1 = WebSocketClientConnect(clientFd_1, url, NULL);\r
+ ret2 = WebSocketClientConnect(clientFd_2, url, NULL);\r
+ ret3 = WebSocketClientConnect(clientFd_3, url, NULL);\r
+ ret4 = WebSocketClientConnect(clientFd_4, url, NULL);\r
+ if (ret1 != 0 || ret2 != 0 || ret3 !=0 || ret4 != 0) {\r
+ printf("connect fail\n");\r
+ WebSocketClientClose(clientFd_1);\r
+ WebSocketClientClose(clientFd_2);\r
+ WebSocketClientClose(clientFd_3);\r
+ WebSocketClientClose(clientFd_4);\r
+ return -1;\r
+ }\r
+\r
+ while (g_recedata_flag == 0) {\r
+ sleep(1);\r
+ }\r
+\r
+ ret1 = WebSocketClientClose(clientFd_1);\r
+ ret2 = WebSocketClientClose(clientFd_2);\r
+ ret3 = WebSocketClientClose(clientFd_3);\r
+ ret4 = WebSocketClientClose(clientFd_4);\r
+ if (ret1 != 0 || ret2 != 0 || ret3 != 0 || ret4 != 0) {\r
+ printf("close fail!, ret1=0x%x, ret2=0x%x, ret3=0x%x, ret4=0x%x\n", ret1, ret2, ret3, ret4);\r
+ } else {\r
+ printf("close success!");\r
+ }\r
+ g_recedata_flag = 0;\r
+ return 0;\r
+}\r
+\r
+// 连接服务器成功后发送字符数据,服务器接收到断连再次连接\r
+int ws_con_discon(void)\r
+{\r
+ int clientFd_1, clientFd_2;\r
+ int ret;\r
+\r
+ const char *url1 = "ws://60.204.230.165:80";\r
+ clientFd_1 = WebSocketClientConstructor(OnOpen, OnMessage, OnError, OnClose);\r
+ if (clientFd_1 < 0) {\r
+ printf("client fd fail=%d\n", clientFd_1);\r
+ return -1;\r
+ }\r
+\r
+ ret = WebSocketClientConnect(clientFd_1, url1, NULL);\r
+ if (ret != 0) {\r
+ printf("connect fail\n");\r
+ WebSocketClientClose(clientFd_1);\r
+ return -1;\r
+ }\r
+ \r
+ while (g_recedata_flag == 0) {\r
+ sleep(1);\r
+ }\r
+\r
+ ret = WebSocketClientClose(clientFd_1);\r
+ if (ret != 0) {\r
+ printf("close fail, ret=0x%x\n", ret);\r
+ } else {\r
+ printf("close success!");\r
+ }\r
+ g_recedata_flag = 0;\r
+\r
+ // 第二次连接发送数据\r
+ clientFd_2 = WebSocketClientConstructor(OnOpen, OnMessage, OnError, OnClose);\r
+ if (clientFd_2 < 0) {\r
+ printf("client fd fail=%d\n", clientFd_2);\r
+ return -1;\r
+ }\r
+\r
+ ret = WebSocketClientConnect(clientFd_2, url1, NULL);\r
+ if (ret != 0) {\r
+ printf("connect fail\n");\r
+ WebSocketClientClose(clientFd_2);\r
+ return -1;\r
+ }\r
+ \r
+ while (g_recedata_flag == 0) {\r
+ sleep(1);\r
+ }\r
+\r
+ ret = WebSocketClientClose(clientFd_2);\r
+ if (ret != 0) {\r
+ printf("close fail, ret=0x%x\n", ret);\r
+ } else {\r
+ printf("close success!");\r
+ }\r
+ g_recedata_flag = 0;\r
+ return 0;\r
+}
\ No newline at end of file