Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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
Node.js Windows 2012服务器未在上执行socket.on_Node.js_Sockets - Fatal编程技术网

Node.js Windows 2012服务器未在上执行socket.on

Node.js Windows 2012服务器未在上执行socket.on,node.js,sockets,Node.js,Sockets,我试图学习使用NodeJS和JavaScript来替换至少一些Perl代码 我需要创建一个套接字,让服务器/侦听器接受从客户端发送的数据 我遇到的问题是,在Windows 2012 server下,下面的侦听器代码完全忽略了socket.on命令,但它在CentOS下运行良好 有人对我遗漏的东西有什么建议吗 var net = require('net'); var fs = require('fs'); var server = net.createServer(function(sock

我试图学习使用NodeJS和JavaScript来替换至少一些Perl代码

我需要创建一个套接字,让服务器/侦听器接受从客户端发送的数据

我遇到的问题是,在Windows 2012 server下,下面的侦听器代码完全忽略了socket.on命令,但它在CentOS下运行良好

有人对我遗漏的东西有什么建议吗

var net = require('net');
var fs  = require('fs');

var server = net.createServer(function(socket) {

    console.log('At : ' + (new Date()) + '\nA client connected to server...');
    console.log('IP addr : ' + socket.remoteAddress);

    // Process data sent from client
    socket.on('data', function(data) {

        console.log('Reached socket.on function.\n');

        // Following command reads the data stream from client
        var string = ('IP addr : '+ socket.remoteAddress + ' sent on ' + (new Date()) + ' : ' + data.toString()+'\n');
        console.log(string);

        // Following command writes the data stream to a file
        fs.appendFile('client-data', string, function(err) {
            if (err) {
                return console.log(err);
            }
            console.log('Data saved from client...');
        });
    });

    // This section sends data back to client, close socket, and 
    // resets to accept new socket connection
    socket.write('\n<svrdata>\nData received by : HS-AD02 \r\n</svrdata>');
    socket.pipe(socket);
    socket.end();

    console.log('The client has disconnected...\n');

}).listen(10337, 'hs-ad02');
var net=require('net');
var fs=需要('fs');
var server=net.createServer(函数(套接字){
log('At:'+(new Date())+'\n连接到服务器的客户端…);
log('IP地址:'+socket.remoteAddress);
//处理从客户端发送的数据
socket.on('data',函数(data){
log('reacted socket.on function.\n');
//下面的命令从客户端读取数据流
变量字符串=('IP地址:'+socket.remoteAddress+'在'+(新日期())+':'+data.toString()+'\n')上发送);
console.log(字符串);
//下面的命令将数据流写入文件
fs.appendFile('client-data',字符串,函数(err){
如果(错误){
返回console.log(err);
}
log('从客户端保存的数据…');
});
});
//本节将数据发送回客户端,关闭套接字,然后
//重置以接受新的套接字连接
socket.write('\n\n接收到的数据:HS-AD02\r\n');
插座。管道(插座);
socket.end();
log('客户端已断开…\n');
}).听(10337,“hs-ad02”);

在上面的代码中,问题有一个非常简单的解决方案。 窗户下面有两行 插座。管道(插座); socket.end()
使套接字在接收客户端数据之前关闭


删除这两行代码就可以了。

这个问题与Perl有什么关系?我希望您不要因为Perl代码最近有点不流行而丢弃完美的Perl代码?Borodin:我对Perl标记表示歉意。那是个错误。实际上,我根本没有放弃PERL。我只需要重写一些PERL脚本,所以我想我应该用NodeJS来做,这样我就可以学习了。你肯定不想在所有的大写字母中看到你自己的名字!既然您的目标是学习,那么您应该更加注意代码中的布局和空白。您应该为一个程序的外观以及它的可读性感到自豪。谢谢你。但是,我仍然需要帮助解决这个问题?您是否无法提供有关为什么该功能将在Linux/CentOS而不是Windows 2012下工作的任何见解?