第6到9行,为什么要用radius=r,不能直接把方法里面的参数设为radius吗

第6到9行,为什么要用radius=r,不能直接把方法里面的参数设为radius吗

img

这体现了面向对象的封装性啊,调用者必须通过你这个方法,才能设置,而不是直接设置。你这里可以对输入的参数加上判断,如你的if,判断非法输入不去修改成员变量。

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/1066168
  • 这篇博客你也可以参考下:Radius认证协议(七)报文属性
  • 除此之外, 这篇博客: radius库的使用中的 1.radius模块中的实例 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • var radius = require('radius');
    var dgram = require("dgram");
    
    var secret = 'radius_secret';
    var server = dgram.createSocket("udp4");
    
    server.on("message", function (msg, rinfo) {
      var code, username, password, packet;
      packet = radius.decode({packet: msg, secret: secret});
    
      if (packet.code != 'Access-Request') {
        console.log('unknown packet type: ', packet.code);
        return;
      }
    
      username = packet.attributes['User-Name'];
      password = packet.attributes['User-Password'];
    
      console.log('Access-Request for ' + username);
    
      if (username == 'jlpicard' && password == 'beverly123') {
        code = 'Access-Accept';
      } else {
        code = 'Access-Reject';
      }
    
      var response = radius.encode_response({
        packet: packet,
        code: code,
        secret: secret
      });
    
      console.log('Sending ' + code + ' for user ' + username);
      server.send(response, 0, response.length, rinfo.port, rinfo.address, function(err, bytes) {
        if (err) {
          console.log('Error sending response to ', rinfo);
        }
      });
    });
    
    server.on("listening", function () {
      var address = server.address();
      console.log("radius server listening " +
          address.address + ":" + address.port);
    });
    //监听1812端口
    server.bind(1812);