Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从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 - Fatal编程技术网

如何从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);

如何从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

对于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.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将字节流解释为具有任何特定编码的字符。如果您不调用它,那么您的“数据”事件将被传递到缓冲区实例而不是字符串。这是正确的——我认为正确的做法是避免设置任何编码。