- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
文档首页
英文版文档
本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可。
索引?|?在单一页面中浏览?|?JSON格式
UDP / 数据报套接字
dgram.createSocket(type, [callback])
类: dgram.Socket
事件: message
事件: listening
事件: close
事件: error
socket.send(buf, offset, length, port, address, [callback])
socket.bind(port, [address], [callback])
socket.close()
socket.address()
socket.setBroadcast(flag)
socket.setTTL(ttl)
socket.setMulticastTTL(ttl)
socket.setMulticastLoopback(flag)
socket.addMembership(multicastAddress, [multicastInterface])
socket.dropMembership(multicastAddress, [multicastInterface])
socket.unref()
socket.ref()
UDP / 数据报套接字#
稳定度: 3 - 稳定
数据报套接字通过?require(dgram)?提供。
重要提醒:dgram.Socket#bind()?的行为在 v0.10 中已改变,并且现在它总是异步的。如果您的代码看起来像这样:
您需要将它改成这样:
type?String 可以是 udp4 或 udp6
callback?Function 可选,会被作为?message?事件的监听器。
返回:Socket 对象
创建一个指定类型的数据报 Socket。有效类型包括?udp4?和?udp6。
接受一个可选的回调,会被添加为?message?事件的监听器。
如果您想接收数据报则可调用?socket.bind。socket.bind()?会绑定到“所有网络接口”地址的一个随机端口(udp4?和?udp6?皆是如此)。然后您可以通过?socket.address().address?和?socket.address().port?来取得地址和端口。
dgram Socket 类封装了数据报功能,可以通过?dgram.createSocket(type, [callback])?创建。
msg?Buffer 对象,消息
rinfo?Object,远程地址信息
当套接字中有新的数据报时发生。msg?是一个?Buffer,rinfo?是一个包含了发送者地址信息的对象:
当一个套接字开始监听数据报时产生。它会在 UDP 套接字被创建时发生。
当一个套接字被?close()?关闭时产生。之后这个套接字上不会再有?message?事件发生。
exception?Error 对象
当发生错误时产生。
buf?Buffer 对象,要发送的消息
offset?Integer,Buffer 中消息起始偏移值。
length?Integer,消息的字节数。
port?Integer,目标端口
address?String,目标 IP
callback?Function,可选,当消息被投递后的回调。
对于 UDP 套接字,必须指定目标端口和 IP 地址。address?参数可以是一个字符串,它会被 DNS 解析。可选地可以指定一个回调以用于发现任何 DNS 错误或当?buf?可被重用。请注意 DNS 查询会将发送的时间推迟到至少下一个事件循环。确认发送完毕的唯一已知方法是使用回调。
如果套接字之前并未被调用?bind?绑定,则它会被分配一个随机端口并绑定到“所有网络接口”地址(udp4?套接字是 0.0.0.0;udp6?套接字是 ::0)。
向?localhost?随机端口发送 UDP 报文的例子:
关于 UDP 数据报大小的注意事项
一个?IPv4/v6?数据报的最大大小取决与?MTU(最大传输单位)和?Payload Length?字段大小。
Payload Length?字段宽?16 bits,意味着正常负载包括网络头和数据不能大于 64K(65,507 字节 = 65,535 ? 8 字节 UDP 头 ? 20 字节 IP 头);这对环回接口通常是真的,但如此大的数据报对大多数主机和网络来说是不切实际的。
MTU?是一个给定的数据链路层技术能为数据报提供支持的最大大小。对于任何连接,IPv4?允许最小?68?字节的?MTU,而 IPv4 所推荐的?MTU?为?576(通常作为拨号类应用的推荐?MTU
文档评论(0)