经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » Node.js » 查看文章
nodejs实现UDP组播示例方法
来源:jb51  时间:2019/11/4 11:54:50  对本文有异议

众所周知,UDP数据传输方式有 单播,组播,广播。

其中单播模式是最常用,这里就不再啰嗦了,网上随便都能搜到。

下面的示例主要实现简单的UDP组播方式。可以正常收发UDP数据。

Server端代码

  1. const dgram = require('dgram');
  2. const server = dgram.createSocket('udp4');
  3.  
  4. // const local_ip = "192.168.0.xx";
  5. const multicast_ip = "225.0.0.100"; // 这里必须是一个组播地址(D类IP地址)
  6.  
  7. server.on('close', ()=>{
  8. console.log('close socket');
  9. });
  10.  
  11. server.on('listening', ()=>{
  12. console.log('listening...');
  13. server.setBroadcast(true);
  14. server.setMulticastTTL(128);
  15. server.addMembership(multicast_ip);
  16.  
  17. setInterval(()=>{
  18. send_msg();
  19. }, 2000);
  20. });
  21.  
  22. server.on('message', (msg, rinfo)=>{
  23. console.log(`receive client message from ${rinfo.address}: ${rinfo.port}: ${msg}`);
  24. });
  25.  
  26. server.bind(); // 随机绑定本机一个端口
  27.  
  28. function send_msg(){
  29. console.log('send msg');
  30. server.send('hi, im server...', '8062', multicast_ip);
  31. }
  32.  

Client端代码:

  1. const dgram = require('dgram');
  2. var client = dgram.createSocket('udp4');
  3.  
  4. // const local_ip = '192.168.0.xx';
  5. const multicast_ip = "225.0.0.100"; // 这里必须是一个组播地址(D类IP地址)
  6.  
  7. client.on('close', ()=>{
  8. console.log('client closed');
  9. });
  10.  
  11. client.on('error', (err) =>{
  12. console.log('client error' + err);
  13. });
  14.  
  15. client.on('listening', ()=>{
  16. console.log('client listening...');
  17. client.setBroadcast(true);
  18. client.setMulticastTTL(128);
  19. client.addMembership(multicast_ip);
  20. });
  21.  
  22. client.on('message', (msg, rinfo) => {
  23. console.log(`receive server message from ${rinfo.address}: ${rinfo.port}: ${msg}`);
  24. });
  25. client.bind('8062'); // 监听组播数据的端口
  26.  

参考:

https://www.jb51.net/article/173468.htm
https://stackoverflow.com/questions/14130560/nodejs-udp-multicast-how-to

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号