我几乎确定我不了解TCP服务器的基本概念,也没有将数据视为流,更糟糕的是,我可能没有很好地使用事件。我希望TCP服务器向套接字写入“用户名:”,这样您就可以在TCP客户端(如netcat或telnet)上输入用户名,然后TCP服务器必须将下一个数据视为用户名。到目前为止它确实起作用(虽然我几乎确定有更好的方法来做到这一点),接下来它应该写入“密码:”,以便您可以输入密码,如果密码正确,则应验证凭据并执行更多操作...但发生的情况是,当您输入密码时,它再次写入“密码:”,因为
以下是我目前拥有的代码:
socket.write('password: ');
本身位于另一个socket.on('data',function(){//etc});
中。以下是我目前拥有的代码:
var net = require('net');
var server = net.createServer(function (socket) {
socket.addListener("connect", function () {
socket.write('username: ');
socket.on('data',function(data){
var username = data.toString().replace('\n','');
socket.write('password: ');
socket.on('data',function(data){
var password = data.toString().replace('\n','');
// verify authentication here
// Do more stuff
});
});
});
});
server.listen('8000','localhost');
正确的实现方式是什么?我只是实现这个功能,因为我需要接收上传(流),可能没有结束,并且不会一次性全部到达。我尝试使用TCP服务器解决这个问题,这样做很愚蠢吗?
提前感谢。