- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个用 libwebsockets 构建的小型 websocket 服务器,我需要接收一个 string ,问题是接收到的数据是 *void,但我无法将其转换为 string 。
static int my_protocol_callback(struct libwebsocket_context *context,
struct libwebsocket *wsi,
enum libwebsocket_callback_reasons reason,
void *user, void *in, size_t len)
{
int n, m;
unsigned char buf[LWS_SEND_BUFFER_PRE_PADDING + 512 +
LWS_SEND_BUFFER_POST_PADDING];
unsigned char *p = &buf[LWS_SEND_BUFFER_PRE_PADDING];
switch (reason) {
case LWS_CALLBACK_ESTABLISHED:
printf("New Connection\n");
break;
case LWS_CALLBACK_SERVER_WRITEABLE:
break;
case LWS_CALLBACK_RECEIVE:
webcmd = static_cast<std::string*>(in);
break;
case LWS_CALLBACK_FILTER_PROTOCOL_CONNECTION:
break;
default:
break;
}
return 0;
}
在LWS CALLBACK RECEIVE
下case,数据为*in
, 我用 static_cast<std::string*>(in);
类型转换了它, 存储在 webcmd 字符串中。
问题是结果是一个字符指针,而我需要一个真正的字符,因为接下来我需要拆分字符串。
你怎么看?
编辑:解决了问题。
下case LWS_CALLBACK_RECEIVE:
tmpcmd = reinterpret_cast <char*>(in);
strcpy(webcmd , tmpcmd );
webcmd 是一个字符数组而 tmpcmd 是一个字符指针
谢谢大家:D
最佳答案
您不能只是static_cast
到您喜欢的任何内容并希望它能正常工作。不幸的是,您可以在没有警告的情况下将 void*
转换为您喜欢的任何内容。
static_cast
,如 reinterpret_cast
只是在编译时更改类型,而不检查指针指向的内容是否实际代表您正在转换的类型到。
在这种情况下,std::string 是具有多个成员变量和内存表示的复杂类型。除非你传入完全相同的类型,否则你将得到灾难性的结果。
传递实际类型比传递 void*
要好得多,但我不知道你正在做的事情是否可行。
如果您真的需要一个字符串,那么您需要使用 std::string
的构造函数之一。
像这样:
case LWS_CALLBACK_RECEIVE:
std::string command(static_cast<char*>(in));
webcmd = command; //I don't know what webcmd is.
break;
关于c++ - 从 void* 转换为字符串 libwebsocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19136516/
我正在使用libwebsockets-2.1.0具有通用 session 和lwsws选项启用。 在 LWS_CALLBACK_SERVER_WRITEABLE 情况下,我有一些代码可以打开文件,并将
供您引用(因为我在下面提到了库函数),可以在此处找到 libwebsockets 文档:https://github.com/warmcat/libwebsockets/blob/master/lib
我正在让 libwebsocket 客户端发送二进制数据。我已将我的二进制数据保存到缓冲区中 [即buf] 并写入套接字。 n = libwebsocket_write(wsi, &bu
当我尝试从客户端向服务器发送数据时,它显示“lwsts[9972]:从skt读取时出错”。我在互联网上搜索过,没有明确的表达。我按照 LibWebSockets 包中的 test_server.c 示
我目前正在构建一个 WebSocket 服务器,我遇到了以下代码来处理碎片消息(来自 libwebsockets ): case LWS_CALLBACK_RECEIVE: { Client
我正在 Linux 上使用 libwebsocket lib 开发一个简单的 websocket 服务器。 我需要为每个客户端连接的已建立事件发送一个初始化数据包。 如果我使用 memcpy( p,
我正在使用 libwebsockets而且我无法编译自己实现的演示代码。 我创建了上下文: struct libwebsocket_context *context; ... context = li
我正在使用 libwebsockets 2.0,但在尝试使用它作为客户端连接到服务器时遇到了一些问题。 根据 libwebsockets 日志,这是当我相当简单的客户端尝试连接到 echo.webso
我试图找到一个示例来解释如何使用 libwebsocket 实现客户端,但我没有得到任何令人信服的代码。有什么链接可以引用吗? 最佳答案 更正了 Ren-Wei Luo 的代码示例以使用 libweb
我正在尝试运行与 LWS 库一起安装的“libwebsockets-test-server”,但它无法运行,因为“lwsts[31616]: libuv 支持未编译”。 我已经检查过是否安装了 lib
我正在尝试为 X-Plane 编写一个小插件,使用 libwebsocket 创建一个简单的 websocket 服务器。我可以从 Google Chrome 连接到 websocket,但是,当我向
我想创建一个 Web 应用程序,只要 C++ 后端有新内容,一组用户就可以异步接收一些数据。因此,理想情况下,当新用户到来时,他将被添加到订阅者列表中,并且每当 C++ 后端有该组的新数据时,它就会将
这是 libwebsocket_client_connect() 的签名。 struct libwebsocket * libwebsocket_client_connect (struct libw
我正在查看 C websocket 库 libwebsockets 客户端示例。 但是我不明白示例的目的是什么。 Here是这个例子,这个例子有两个连接(在代码 wsi_dumb 和 wsi_mirr
如何在 libwebsockets 回调中设置用户自定义指针? 我在 lws_protocol 中添加了一个指针变量。 调用回调函数时,用户指针始终为NULL。 我使用 libwebsockets v
我正在尝试实现一个 websocket 客户端(使用 C 中的 libwebsockets)。我正在使用 cmake 来控制软件编译过程。 我的问题很简单:如何使用 Libwebsockets 启用调
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 6 年前。
我正在尝试使用 libwebsockets 创建一个 C++ websocket 客户端,但由于超时,我无法建立连接。我已经剥离了测试的内容,这是我用来建立连接的内容: 协议(protocol) st
我将 warmcat 的 libwebsocket C 库用于小型 websocket 服务器。我已经启动并运行了这些示例,并且可以发送数据以响应从 websocket 接收的数据(例如回显发送的反向
我正在使用 libwebsockets同时运行 websocket 服务器和客户端(实际上在同一个可执行文件中)。有没有办法优雅地关闭连接? 我知道我可以在我的回调函数中返回一个负整数来使连接中止,但
我是一名优秀的程序员,十分优秀!