使用UDP来打通内网

本文介绍了使用UDP进行内网穿透的原理,由于其无连接的特性,UDP能方便地实现这一功能,而TCP则相对困难。通过创建并绑定UDP socket,服务器可以监听并处理来自内网用户的数据,实现内网用户的端口暴露,从而建立一个小型P2P网络。
摘要由CSDN通过智能技术生成

使用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')
}

以上的代码是根据网上代码修改后的,看起来更容易理解。

Created with Raphaël 2.1.2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值