Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.9k views
in Technique[技术] by (71.8m points)

C与node对于经UDP协议传输的Buffer数据的处理问题

遇到的问题是一台设备经UDP协议向服务器发送buffer类型的数据,本人使用的是nodejs,在对接受的buffer数据进行转string等操作时,无法获取到想要的数据,但是别人给的C的版本可以输出正常数据,但是本人学过的C基本忘完了,所以想请问下,对应的C操作,NODE需要进行什么样的操作(才像是结构体变量),才能获取正常的数据
C语言的操作:

recvfrom(server_socket_fd, buffer, BUFFER_SIZE,0,(struct sockaddr*)&client_addr, &client_addr_length) //实现声明了一个buffer空间,函数接受到通过udp协议发送的数据之后存储到了buffer中
//对接受的数据进行处理
struct cliprobe_data {
        unsigned char Apmac[6];
        unsigned short int Vendorid;
        unsigned short int Reserved1;
        unsigned char Bssid[6];
        unsigned char Radiotype;
        unsigned char Channel;
        unsigned char Associated;
        unsigned char Messagetype;
        char Timestamp[14];
        unsigned short int Reserved2;
        unsigned char Mutype;
        unsigned short int Reserved3;
        char Rssi;
        unsigned short int Reserved4;
        unsigned char Noisefloor;
        unsigned short int Reserved5;
        unsigned char Datarate;
        unsigned char MPDUflags;
        unsigned char Mumac[6];
        unsigned short int Framecontrol;
        unsigned short int Sequencecontrol;
        unsigned short int Reserved6;
};
package_data = (struct cliprobe_data *) buffer;//相当于格式化了buffer?

Node的话,

serverSocket.on('message', function(msg, rinfo){
    console.log(msg)//buffer 类型
    console.log(msg.toString())//乱码
});

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

nodejs中将buffer转字符串的语法:
buffer.toString([encoding], [start], [end])
encoding默认是utf-8,是不是需要指定encoding。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...