首页 Node.js核心模块手册

参数说明


ceateSocket(type, callback)
type          通讯协议,值:upd4、upd6
callback{     可选,回调函数,接收到数据调用,可用 message 事件代替
  data,           接收到的数据,类型Buffer
  object={        对象数组
    size:0,                  发送方发送数据的字节数
    address:"127.0.0.1",       发送方IP地址
    port:8080,               发送方端口
    family:"IPv4"              发送方IP地址使用的类型,可能的值:IPv4、IPv6                   
 }
}

返回值:端口对象,参考:Socket

示例1


服务器:
var dgram = require("dgram");
var server = dgram.createSocket("udp4");
server.bind(8080, "localhost", function(){
  console.log("开始监听");
});

server.on("error", function(err){ //发生错误
  console.log("错误error");
});

server.on("message", function(data, obj){ //接收到数据
  console.log(data.toString());
  var str = Buffer.from("我是UDPA");

  // 注意:send中设置的 端口obj.port、地址obj.address 是接收到数据的对象端口,不是自定义
  server.send(str, 0, str.length, obj.port, obj.address, function(err, bytes){
    if(err){
      console.log("发送失败");
    }else{
      console.log("发送字节数:"+bytes);
    }
  });
});




客户端:
var dgram= require("dgram");
var client = dgram.createSocket("udp4");

client.on("error", function(err){ //发生错误
  console.log("错误error");
});

client.on("message", function(data, obj){ //接收到数据
  console.log(data.toString());
});

setTimeout(function(){  //测试注意先开服务器端
  var str = Buffer.from("我是UDPB"); 

  // 指定服务器监听的端口及地址
  client.send(str, 0, str.length, 8080, "localhost", function(err, bytes){
    if(err){
      console.log("发送失败");
    }else{
      console.log("发送字节数:"+bytes);
    }
  });
}, 2000);

//注意:客户端不用 bind方法监听端口





示例2:广播消息


服务器:
var dgram = require("dgram");
var server = dgram.createSocket("udp4");

server.on("message", function(data, obj){ //接收到数据
  console.log(data.toString());
});

//注意:bind方法中的IP是本机的局域网IP
server.bind(8080, "192.168.0.1",function(){ //监听,服务端用于监听消息的 IP、端口

  //注意:该方法需要在bind成功后设置
  server.setBroadcast(true);  //设置为广播服务器
}); 

setTimeout(function(){  //测试每2秒向192.168.0.0 ~ 192.168.0.255发送消息
  var str = Buffer.from("测试liboke");
  server.send(str, 0, str.length, 8081, "192.168.0.255");
}, 2000);




客户端:
var dgram = require("dgram");
var client = dgram.createSocket("udp4");

//注意:监听IP为本机局域网IP,端口不能和服务器监听端口相同
client.bind(8081, "192.168.0.100"); //监听,udpgb客户端局域网的IP 及 监听端口

client.on("message", function(data, obj){ //接收到数据
  console.log(data.toString()); 

  var str = Buffer.from("udpga收到");
  client.send(str, 0, str.length, 8080, "192.168.0.1"); //向服务器端口发送消息
});
  
说明:多个客户端,代码相同,主要设置bind的本机监听IP、端口