Node.js Windows 2012服务器未在上执行socket.on
我试图学习使用NodeJS和JavaScript来替换至少一些Perl代码 我需要创建一个套接字,让服务器/侦听器接受从客户端发送的数据 我遇到的问题是,在Windows 2012 server下,下面的侦听器代码完全忽略了socket.on命令,但它在CentOS下运行良好 有人对我遗漏的东西有什么建议吗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
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下工作的任何见解?