从C套接字上的传入流中提取数据(字符串,字符串等)

时间:2018-01-09 14:05:21

标签: c sockets tcp udp esp8266

如何从C中的套接字上的传入流中提取实际数据(以人类可读的字符串,字符,整数等形式)?这样做的目的是能够对传入消息的内容采取行动。

cql

客户端连接并发送,例如'testing123'字符串。如何在“服务器”端解释此字符串?

本练习的目的是通过使用通过本地网络发送到WLAN连接的ESP8266微控制器的适当“命令”,在接收端触发所需的行为。

聚苯乙烯。我意识到这可能是非常原始的机制,所以我会很感激有关此问题的一些反馈。任何想法/想法/建议都非常感激。

2 个答案:

答案 0 :(得分:0)

由于您的服务器无法知道发送数据的内容和方式,因此如果您选择使用字符串,则需要在单词之间指定一条公共消息或某种分隔符。

例如,您可以使用|作为分隔符,以便在客户端输入以下内容:testing|123

在您的服务器上,您现在需要搜索|分隔符并划分传入的数据,以便您有一个字符串“testing”和一个int“123”。

作为另一种方法,您可以在结构的帮助下定义基于数字的接口。 例如:

typedef struct
{
    int cmd;
    int subCmd;
} cmdStruct;

在此,您需要反序列化传入的字节并将它们解析为命令结构并根据收到的命令执行操作。这包括您相应地发送命令。

答案 1 :(得分:0)

事实证明,琐碎的练习。 netbuf结构对传入数据的内容有“占位符”,并且它的长度很长;

netbuf_data(nb, &data, &len);

就我而言;

/* INTERPRETE INCOMING DATA HERE?? */

void *data;
u16_t len;
netbuf_data(nb, &data, &len);

char * theData = data;
printf("%s\n", theData);

在屏幕上打印传入的字符串。