如何从C++;到Javascript 我试图把二进制数据从C++发送到JavaScript,并将其解释为字节。为此,我使用了一个简单的TCP服务器和node.js中的网络模块。 下面是C++代码: char a[4]={128,0,0,1}; std::stringstream stream; stream.write(a,sizeof(a)); server.send(stream);
对于Javascript方面:如何从C++;到Javascript 我试图把二进制数据从C++发送到JavaScript,并将其解释为字节。为此,我使用了一个简单的TCP服务器和node.js中的网络模块。 下面是C++代码: char a[4]={128,0,0,1}; std::stringstream stream; stream.write(a,sizeof(a)); server.send(stream);,javascript,c++,sockets,tcp,Javascript,C++,Sockets,Tcp,对于Javascript方面: var client = new net.Socket(); client.setEncoding('utf8'); client.setNoDelay(true); client.connect({port:25003},handler); client.on('data', function(data) { var thedata=data; console.log('Received from C++: ' + thedata.lengt
var client = new net.Socket();
client.setEncoding('utf8');
client.setNoDelay(true);
client.connect({port:25003},handler);
client.on('data', function(data) {
var thedata=data;
console.log('Received from C++: ' + thedata.length+"bytes");
console.log('DATA: '+thedata);
for(var i=0;i<thedata.length;i++)
{
buffer1[i]=thedata.charCodeAt(i);
}
console.log(buffer1[0]);
});
var client=new net.Socket();
client.setEncoding('utf8');
client.setNoDelay(true);
connect({port:25003},handler);
client.on('data',函数(data){
var数据=数据;
log('从C++接收:'+thedata.length+“bytes”);
log('数据:'+数据);
对于(var i=0;i,因为您使用了这一行:
client.setEncoding('utf8')
超过127时,最高位将设置为1,这意味着当前字符的编码超过几个字节(这似乎不是您的情况,因为它是二进制的)。
您混淆了字节和字符
尝试其他编码,如ASCII,但utf8。@max我认为JavaScript代码在NodeEyes中运行,它在NodeEyes中运行。我认为您希望避免调用.setEncoding()
——您不希望Node将字节流解释为具有任何特定编码的字符。如果您不调用它,那么您的“数据”事件将被传递到缓冲区实例而不是字符串。这是正确的——我认为正确的做法是避免设置任何编码。