我使用net.connect
建立套接字连接,我想知道在连接失败时如何检测它?
似乎这不起作用
//this will return a net.Socket and automatically connect
var client = net.connect({port:22000, host:'10.123.9.163'});
//doesn't trigger a error event even if connection fails
client.on('error', (err)=>{console.log('something wrong')});
//now an error event is emitted reasonably
client.write('hello');
当我运行这段代码时,连接应该失败,它确实失败了,因为当我写一些数据时,会发生错误。但是,我无法检测到连接失败。我怎么能这样做?
=====准备关闭======
该死的,我想我犯了一个错误。实际上连接成功但是由于一些安全策略,服务器关闭连接,我通过telnet发现。尝试其他应该肯定失败的端口后,会发出错误事件,一切都按预期正常。所以,我会在误导其他人的情况下关闭这个问题,也谢谢你们帮助我:)
答案 0 :(得分:0)
最简单,最便携的方法是简单地实施“乒乓”检查,双方都经常发送某种“ping”请求。如果n
未完成的ping请求在一段时间后未得到答复,则认为连接已停止。这种算法基本上就是OpenSSH使用的算法(尽管默认情况下它没有启用)。