使用UDP来打通内网
UDP作为一种无连接的编程,虽然会无可靠保障,但是却让开发更加便捷,这也是UDP可以实现内网穿透的原因,而TCP则很难实现穿透。
内网穿透的原理是user可以通过UDP来连接server的ip,从而打通user的端口,使得server可以连接到user,如果再有新的user来连接server,那么server就可以实现数据中转,实现一个小型的P2P网络。
代码实现
- 引入dgram模块
- 创建socket
- 绑定端口连接与数据监听
- 处理数据
var dgram = require('dgram')
var udp = dgram.createSocket('udp4')
udp.on('message', function(data) {
console.log(data.toString())
})
udp.on('error', function(err) {
console.log('error')
})
udp.on('listening', function(err) {
console.log('listening')
})
udp.bind(8080)
console.log('udp listening on port 8080')
var send = function(message, port, host) {
console.log('send')
udp.send(Buffer.from(message), port || 8090, host || 'windqiu.com')
}
以上的代码是根据网上代码修改后的,看起来更容易理解。