Вы не можете отправить данные, получить ответ и затем отправить больше данных по тому же соединению.TCP не отправляет сообщения «отдельно».TCP - это потоковый протокол, который означает, что когда вы записываете байты в сокет, вы получаете одинаковые байты в том же порядке на принимающей стороне.Здесь нет понятия «границы сообщений» или «пакеты».
Если вы хотите сделать это, вам нужно каждый раз устанавливать новое соединение.
Вот как я сделал, чтобы отправить несколько EHLO по одному и тому же соединению:
const net = require('net');
const client = net.createConnection({ host: '127.0.0.1', port: 1025 }, () => {
console.log('connected to server!');
checkEHLO(client, [ 'xxx@xxx.xxx', 'xxx@xxx.xxx', 'xxx@xxx.xxx' ]);
});
client.on('data', (data) => {
console.log(data.toString());
client.end();
});
client.on('end', () => {
console.log('disconnected from server');
});
function checkEHLO(client, emails){
emails.forEach((email) => {
client.write('EHLO ' + email + '\n');
});
}
И это был ответ, который я получил:
connected to server!
220 127.0.0.1 ESMTP Service Ready
250-Hello xxx@xxx.xxx
250-PIPELINING
250-8BITMIME
250-STARTTLS
250 AUTH PLAIN LOGIN
250-Hello xxx@xxx.xxx
250-PIPELINING
250-8BITMIME
250-STARTTLS
250 AUTH PLAIN LOGIN
250-Hello xxx@xxx.xxx
250-PIPELINING
250-8BITMIME
250-STARTTLS
250 AUTH LOGIN PLAIN