nodejs简单实现端口映射(隧道)

野生程序猿-杂烧5年前随意分享1188

来个万能的javascript代码,实现端口映射。前端electron桌面软件也可以用到。

【port.js】

var net = require('net');
var addrRegex = /^(([a-zA-Z\-\.0-9]+):)?(\d+)$/;
var addr = {
        from: addrRegex.exec(process.argv[2]),
        to: addrRegex.exec(process.argv[3])
};

if (!addr.from || !addr.to) {
        console.log('Usage: <from> <to>');
        return;
}

net.createServer(function(from) {
        var to = net.createConnection({
                host: addr.to[2],
                port: addr.to[3]
                });
        from.pipe(to);
        to.pipe(from);
		
	   from.on('end', function() {
		  console.log('客户端关闭连接');
	   });
		
	   from.on('data', function() {
		  console.log("11");
	   });
	   from.on('error', function() {
		  console.log("error");
	   });
	   
		
		
}).listen(addr.from[3], addr.from[2]).on('error', function() {
		  console.log("error");
});


node port.js 1234 外网ip:80

node port.js 1234 内网ip:80

其实前面介绍过一个远程管理工具的开发,为什么没有放出代码呢?你看我先前发布的内容,图片打码了,因为暴露了我的服务器信息,那个版本内部用还行,给别人用还要做很多工作保护自己的服务器。这里的端口映射再优化一下或许可以用在我的远程工具上。远程的时候先连一个暴露的自己本机的端口,这个端口在隧道到服务器。

4.png

相关文章

nodejs+canvas 后端脚本生成游戏五维图

nodejs+canvas 后端脚本生成游戏五维图

我们有部分教学类的软件,设计成简单的游戏形式。我们从完成度、技能值、互动性、熟练度、积极性5个纬度打分,每个纬度的打分是1-5,都是整数。    ...

nodejs同步操作sqlite3类

electron是基于nodejs的,为了方便electron存储,想到了sqlite这种轻便数据库。作为桌面应用,不像nodejs写服务端,为了简化开发,所以写了个同步的操作sqlite的类库,需要...

nodejs同步mysql操作类

nodejs越来越火了,打算稍微在深入学习一下,于是把php的mysql操作类库稍微改了一下,为了保留php思路,这里加入了同步的方法。简单测了一下,本地 没有问题,不知道同步在多人访问时候是否有坑,...

初学nodejs+express,打造cms系统(5)

今天来尝试做上传功能,其实就是一个上传接口。已经跟php完全两样了,两眼一抹黑,直接百度搜索出来拿过来用,也不知道性能如何,反正可以跑通,需要找机会验证一下。【upload.js】//api库&nbs...

编译的困扰-经验分享

编译的困扰-经验分享

开发的时候我们编译经常遇到坑,一会要用python3,一会又要用python 2.7的情况,nodejs一会要这个版本,一会要那个版本的情况,甚至npm都有版本要求。...

初学nodejs+express,打造cms系统(3)

上次聊到了我的base.js 插入式编程,接着聊编程正题首先是数据库操作类【db_mysql.js】var mysql=require('mysql');  va...