报文数据 Socket 类封装了数据报文(datagram) 函数。必须通过 dgram.createSocket(...) 函数创建。
Event: 'message'- msg 缓存对象. 消息。
- rinfo 对象. 远程地址信息。
当 socket 上新的数据报文(datagram)可用的时候,会触发这个事件。msg 是一个缓存,rinfo 是一个包含发送者地址信息的对象 - socket.on('message', function(msg, rinfo) {
- console.log('Received %d bytes from %s:%d\n',
- msg.length, rinfo.address, rinfo.port);
- });
复制代码 Event: 'listening'当 socket 开始监听数据报文(datagram)时触发。在 UDP socket 创建时触发。 Event: 'close'当 socket 使用 close() 关闭时触发。在这个 socket 上不会触发新的消息事件。 Event: 'error'当发生错误时触发。 socket.send(buf, offset, length, port, address[, callback])- buf 缓存对象 或 字符串. 要发送的消息。
- offset 整数. 消息在缓存中得偏移量。
- length 整数. 消息的比特数。
- port 整数. 端口的描述。
- address 字符串. 目标的主机名或 IP 地址。
- callback 函数. 当消息发送完毕的时候调用。可选。
对于 UDP socket,必须指定目标端口和地址。 address 参数可能是字符串,它会被 DNS 解析。 如果忽略地址或者地址是空字符串,将使用 '0.0.0.0' 或 '::0' 替代。依赖于网络配置,这些默认值有可能行也可能不行。 如果 socket 之前没被调用 bind 绑定,则它会被分配一个随机端口并绑定到所有接口( "all interfaces" )地址(udp4 sockets 的'0.0.0.0' , udp6 sockets 的'::0') 回调函数可能用来检测 DNS 错误,或用来确定什么时候重用 buf 对象。注意,DNS 查询会导致发送tick延迟。通过回调函数能确认数据报文(datagram)是否已经发送的 下面的例子是在 localhost 上发送一个 UDP 包给随机端口: - var dgram = require('dgram');
- var message = new Buffer("Some bytes");
- var client = dgram.createSocket("udp4");
- client.send(message, 0, message.length, 41234, "localhost", function(err) {
- client.close();
- });
复制代码
|