NodeJS накладывает ограничение на исходящие TCP-соединения, адрес источника должен быть уникальным для соединений с разными хостами - PullRequest
0 голосов
/ 04 июня 2018

Кажется, что NodeJS налагает ограничение на localAddress метода net.connect.Хотя хосты назначения различны, NodeJS требует, чтобы localAddres были уникальными.Насколько я знаю, в исходящих TCP-соединениях только комбинация исходного IP-адреса, исходного порта, IP-адреса назначения и порта назначения должна быть уникальной.Однако API-интерфейсы NodeJS не предоставляют никакого способа создания более одного соединения с одним и тем же портом источника, если только они не имеют разные IP-адреса источника.Я создал исходный код только для того, чтобы показать ограничения.На самом деле я хочу создать прокси-сервер, и этот сервер должен быть подключен к более чем 65 000 серверов.Конечно, они не уникальны.Но NodeJS ограничивает мои одновременные подключения менее 65 КБ, поскольку он не позволяет повторно использовать localPort и, следовательно, сделает невозможным более 65 КБ одновременных исходящих TCP-подключений.Есть ли способ обойти это ограничение?

const duplicatePort=1010;
var m=net.connect({port:80,host:'host1.com',localPort:duplicatePort},function()
{
    m.on('data',function(data){
        console.log('host1: ',data.toString());
    })
    var n=net.connect({port:80,host:'host2.com',localPort:duplicatePort},function()
    {
        n.on('data',function(data){
            console.log('host2: ',data.toString());
        })
        m.write('GET / HTTP/1.1\r\nHost: www.host1.com\r\n\r\n');
        m.write('GET / HTTP/1.1\r\nHost: www.host2.com\r\n\r\n');
    })
})

Будет выдана следующая ошибка.(Второй вызов функции net.connect)

Ошибка: bind EADDRINUSE 0.0.0.0:1010

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...