与nodeJS进行TCP通信

时间:2016-08-04 14:07:31

标签: node.js sockets tcp

我试图在nodejs服务器和red pitaya卡之间进行通信。 客户端连接到Web服务器,使用表单选择一些设置,然后发送给发送回大量数字的红色火龙果。

然后,Web服务器将它们写入可下载的文件中。 它随机工作。

这是服务器:

var settings = require('./settings_model');
var fs = require('fs');
var net = require('net');
var msg = [];

module.exports = function(app) {
net.createServer(function (socket) {

  socket.on('data', function (data) {
      /*    test console  */     
         var msg = JSON.stringify(data);
       console.log("data received :" + msg);

          tab = new Array();
          for(i = 0; i < nbPix; i++){
              tab[i] = new Array();
              fs.appendFile('./public/img.txt', '\n');
                for(var j=0 ; j < len; j++){
                  tab[i][j]= data[i+(j*nbPix)];
                    if(!isNaN(tab[i][j])){
                      fs.appendFile('./public/img.txt',  tab[i][j]+ " ");
                    }; 
                };
          }; 
  });

 app.post('/api/sendSettings', function(req, res) {

      // creation of the file
        fs.writeFile("./public/img.txt", "", function(err){
             if(err){console.log(err)};
             console.log("the file was saved");
         });

    // here we send settings to the red pitaya          
       socket.write(input); 
       res.end();
  });
 }).listen(9000);
};

对于微小的价值观,有时它是有效的。我可以看到日志:

  

收到的数据:{&#34; type&#34;:&#34; Buffer&#34;,&#34; data&#34;:[1,1,.... 2]}

但是,对于相同的值,它可以被划分并且破坏我的2d数组

  

数据接收:{&#34;输入&#34;:&#34;缓冲&#34;,&#34;数据&#34;:[1,1,...... 1]}

     

数据接收:{&#34;输入&#34;:&#34;缓冲&#34;,&#34;数据&#34;:[2,2,...... 2]}

如果收到的数据太大,系统会崩溃:

  

错误:EMFILE:打开的文件太多,打开&#39; ./ public / img.txt&#39;

有没有办法设置接收的流大小?我想我需要所有数据来构建我的2D阵列。

对于EMFILE错误,我尝试更改&#34;打开文件&#34;等设置。尺寸。还是行不通。它不应该试图打开多个文件??

我是这类项目的新手,所以如果你能给我提示或文档链接,请立即接受!

0 个答案:

没有答案