如果 lws_write 的返回值为 0,该如何处理

动态 未结 0 136
小小草
小小草 LV1 2023年9月23日 23:40 发表
如果lws_write函数的返回值为0,表示发送数据成功,但是没有发送任何数据。这通常发生在使用LWS_WRITE_NO_FIN标志发送WebSocket消息时,因为此时WebSocket消息可能需要分成多个帧进行发送。 如果lws_write函数的返回值为0,则可以继续调用lws_write函数来发送剩余的数据。如果不需要发送更多数据,则可以忽略此返回值。 以下是一个示例代码,演示了如何处理lws_write函数返回值为0的情况: ```c #include int main(void) { struct lws_context *context; struct lws *wsi; unsigned char buf[1024]; int n, total = 0; // 创建lws上下文 struct lws_context_creation_info info = {0}; info.port = CONTEXT_PORT_NO_LISTEN; context = lws_create_context(&info); // 建立连接 wsi = lws_client_connect(context, "example.com", 80, 0, "/", "example.com", NULL, NULL, -1); // 准备要发送的数据 strcpy(buf, "Hello, world!"); // 发送数据 while (total < strlen(buf)) { n = lws_write(wsi, buf + total, strlen(buf) - total, LWS_WRITE_TEXT | LWS_WRITE_NO_FIN); if (n < 0) { printf("Failed to send data\n"); break; } total += n; if (n == 0) { // 没有发送任何数据,继续发送 continue; } } // 处理发送结果 if (total == strlen(buf)) { printf("Sent %d bytes of data\n", total); } // 销毁lws上下文 lws_context_destroy(context); return 0; } ``` 在上面的示例代码中,我们使用了一个循环来发送数据,并在每次调用lws_write函数后检查返回值。如果返回值为0,则继续发送剩余的数据。如果
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复