我是node.js的初学者,我愿意创建一个TCP服务器,根据收到的内容给我不同的答案。
这是服务器端:
var net = require('net');
var server = net.createServer(function(c) {
console.log('socket opened');
c.setEncoding('utf8');
c.on('end', function() {
console.log('connection/socket closed');
});
c.on('data', function(data) {
console.log('Data:'+data);
if(data.toString() == "open"){
c.write('Answer: opened');
}else if(data.toString() === "add"){
c.write('Answer: added');
}else if(data.toString() === "process"){
c.write('Answer: processed');
}
});
});
server.listen(8080, function() { // start server (port 8080)
console.log('server started');
});
我只是使用telnet来尝试查看我的代码是否正常工作。
基本上我希望服务器回答'打开'如果我发送'打开','添加'如果我发送'添加'...
我不知道为什么,但它不会工作。
我已经尝试了一个小时了,我确信这一定是我犯的一些简单的错误,但现在我看不到任何会导致这个简单的echo服务器无法正常工作的事情。
答案 0 :(得分:17)
我后来知道了,但有一个更好的答案,我发现这个谷歌搜索类似的问题。所以这是我的2美分。
要正确捕捉所有案例(而不仅仅是针对此案例的特定怪癖),您应该只使用trim()
方法
if (data.toString().trim() === 'open') {
//...
}
答案 1 :(得分:1)
您的代码确定。使用telnet时,按ENTER键发送短信。服务器收到的文本以'\r\n'
结尾。所以你应该像这样比较两个字符串:
if (data.toString() === 'open\r\n') {
//...
}
答案 2 :(得分:0)
html(javascript)中的字符串比较和响应
var diff_match_patch = require('googlediff');
var dmp = new diff_match_patch();
function compareString(){
var leftHandSideObject = JSON.stringify(req.body[0]);
var rightHandSideObject = JSON.stringify(req.body[1]);
var ms_start = (new Date()).getTime();
var d = dmp.diff_main(leftHandSideObject, rightHandSideObject);
var ms_end = (new Date()).getTime();
if (true) {
dmp.diff_cleanupSemantic(d);
}
res.status(200).json(ds);
}