我有一个用 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
情况下,数据是*in
,我将其转换为 static_cast<std::string*>(in);
,存储在 webcmd 字符串中。
问题是结果是一个字符指针,而不是我需要一个真正的字符,因为接下来我需要拆分字符串。
你怎么看待这件事?
编辑:解决了这个问题。
在下面case LWS_CALLBACK_RECEIVE:
tmpcmd = reinterpret_cast <char*>(in);
strcpy(webcmd , tmpcmd );
webcmd 是 char 数组, tmpcmd 是 char 指针
谢谢大家:D