三木社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 275|回复: 0
打印 上一主题 下一主题

Class: dgram.Socket

[复制链接]

1562

主题

1564

帖子

4904

积分

博士

Rank: 8Rank: 8

积分
4904
跳转到指定楼层
楼主
发表于 2017-8-14 08:34:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
报文数据 Socket 类封装了数据报文(datagram) 函数。必须通过 dgram.createSocket(...) 函数创建。
Event: 'message'
  • msg 缓存对象. 消息。
  • rinfo 对象. 远程地址信息。
当 socket 上新的数据报文(datagram)可用的时候,会触发这个事件。msg 是一个缓存,rinfo 是一个包含发送者地址信息的对象
  1. socket.on('message', function(msg, rinfo) {
  2.   console.log('Received %d bytes from %s:%d\n',
  3.               msg.length, rinfo.address, rinfo.port);
  4. });
复制代码
Event: 'listening'
当 socket 开始监听数据报文(datagram)时触发。在 UDP socket 创建时触发。
Event: 'close'
当 socket 使用 close() 关闭时触发。在这个 socket 上不会触发新的消息事件。
Event: 'error'
  • exception 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)是否已经发送的
考虑到多字节字符串情况,偏移量和长度是字节长度byte length,而不是字符串长度。
下面的例子是在 localhost 上发送一个 UDP 包给随机端口:
  1. var dgram = require('dgram');
  2. var message = new Buffer("Some bytes");
  3. var client = dgram.createSocket("udp4");
  4. client.send(message, 0, message.length, 41234, "localhost", function(err) {
  5.   client.close();
  6. });
复制代码


回复

使用道具 举报

Archiver|手机版|小黑屋|三木电子社区 ( 辽ICP备11000133号-4 )

辽公网安备 21021702000620号

GMT+8, 2025-5-3 00:02 , Processed in 0.046125 second(s), 23 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表