Я почти уверен, что не понимаю основных понятий сервера TCP, и я не воспринимаю данные как потоки, и, что еще хуже, я не очень хорошо использую события.
Я хотел, чтобы tcp-сервер записывал в сокет 'username:', чтобы вы могли затем ввести свое имя пользователя (на 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-сервером?
Заранее спасибо.