我在sample code
tcp server
var server = net.createServer();
server.on('connection', function (socket) {
if(restrictedIP == sock.remoteAddress){
//How to close the particular connection safely without
//affecting other connections
}
socket.on('data', function(data) {
console.log(data);
});
socket.on('close', function(data) {
console.log('client disconnected');
});
});
server.listen(3000, '127.0.0.1');
这种逻辑是否适合验证客户端/服务器。
主要的,如何从受限制的IP地址关闭特定连接。(第4行 - 评论)
我有两个服务器,一个是客户端服务器,快递/ http服务器允许将其命名为server1-express
,另一个是名为server2-tcp
的tcp服务器。
server1-express
服务器将使用tcp与server2-tcp
对话。
server2-tcp
应该只允许这个特定的server1-express
服务器,它不应该允许连接到任何其他IP,
使用socket.destroy()会导致server2-tcp
崩溃。
使用socket.end()会强制我们write
到服务器。
ip
并拒绝所有其他ip
访问权限?任何帮助或建议都将不胜感激
答案 0 :(得分:3)
这取决于您的意思"验证",但显然多个人可以使用IP地址(例如在路由器后面)。因此,如果这是一个问题,你将不得不提出自己的协议或重新使用现有的协议(可能更好的想法使用已经过#34;经过测试的#34;)。一个更复杂的"例如,使用TLS,它内置于节点中,并通过证书/密钥为您提供加密和身份验证,同时仍然为您提供原始套接字。
就终止连接而言,您可以通过调用套接字上的.end()
来优雅地执行此操作,或.destroy()
强制终止套接字。