除了点对点,通常UDP数据的传递方式有两种,一种是BroadCast,一种是MultiCast。中文一般把它们翻译作广播和组播。前者是简单的在局域网里面广播;后者是借助路由器将数据发送到包括英特网在内的任何多个地址。

在C#里面,处理UDP通讯最简单的方法就是使用UdpClient。具体使用方法我也不赘述了,在msdn上就有。需要注意的问题有:
1、UDP通讯在发送的时候可以绑定任何本地端口,但是在接收的时候需要在本地绑定广播或者多播端口。
2、组播的时候发送和接收双方都需要JoinMulticastGroup。参数timeToLive名字很容易让人误会,其实它指的是允许UDP数据穿过几个路由器(当然还要路由器允许组播包通过才行);在WinSock API当中,这个参数一般叫做scope,我觉得是比较合适的参数名字;如果你不明白或者没有特别的需要,把这个参数设为5就可以了。
3、UdpClient的发送和接收都是无限阻塞的。这让编程变得更容易,但是也会带来一些麻烦。发送的问题倒不大,因为发送UDP数据基本上不会阻塞。不过接收就不一样了,最好是单独起一个线程进行接收动作,然后在需要停止接收的时候,先UdpClient.Close()再Thread.Abort()。

如果需要更灵活的控制,那么就不要使用UdpClient,改为直接使用Socket就可以了。稍微麻烦一点,不过道理一样的。

附带说一下:点对点传大量UDP数据的时候,先调用connect方法可以节省不少时间

转载于:https://www.cnblogs.com/94cool/archive/2011/09/03/2165809.html

[C#] 接收和发送UDP数据相关推荐

  1. qt定时连续发送udp数据包_TCP和UDP

    首先强调一点,TCP/IP协议是一个协议簇.里面包括很多协议的,UDP只是其中的一个, 之所以命名为TCP/IP协议,因为TCP.IP协议是两个很重要的协议,就用他两命名了. 两个协议的区别实际使用时 ...

  2. Android客户端通过TCP接收服务器端发送的数据

    引言 因为我确实不懂TCP通信这一块儿,最近项目中要实现客户端接收服务器端发送过来的数据(这个数据是int型的,范围是0~360,而且服务器端用C语言写的,每一秒发送一次,客户端只需要不断接收就好了) ...

  3. Java:PC端作为客户端连接蓝牙设备并接收蓝牙发送的数据

    感谢:(1)PC端蓝牙开发  https://www.cnblogs.com/zeussbook/p/12827479.html https://blog.csdn.net/svizzera/arti ...

  4. 原始套接字SOCK_RAW发送UDP数据包

    使用原始套接字发送udp数据包,从传输层封包到链路层(mac头+ip头+udp头).udp数据包,从传输层封包到链路层(mac头+ip头+udp头). head.h文件如下: #ifndef _HEA ...

  5. linux send 失败_求助:sendto()发送UDP数据包失败:message too long该如何解决?

    求助:sendto()发送UDP数据包失败:message too long该如何解决? 发布时间:2012-03-24 23:17:25来源:红联作者:zhl2001xlh800 我想使用sendt ...

  6. 【Linux网络编程】原始套接字实例:发送 UDP 数据包

    以太网报文格式: 详细的说明,请看<MAC 头部报文分析>. IP 报文格式: 详细的说明,请看<IP 数据报格式详解>. UDP 报文格式: 详细的说明,请看<UDP ...

  7. linux串口编程实例_Linux 网络编程——原始套接字实例:发送 UDP 数据包

    以太网报文格式: IP 报文格式: UDP 报文格式: 校验和函数: /*******************************************************功能:校验和函数参 ...

  8. form data怎么接收_VUE发送Formdata数据,NodeJS接收

    VUE发送Formdata数据 •参数blob是通过this.cropper.getCroppedCanvas().toBlob(blob => { });获取到的.•具体使用方法,参考此链接地 ...

  9. stm32接收OpenMv发送的数据,并用oled屏显示

    自己备赛的过程中遇到了一些问题,网上找了很久才总结出来,openmv通过串口发送数据,stm32进行接收并显示在液晶屏上,亲测可用. 使用设备stm32f103zet6,液晶屏为四线 感谢拾牙慧者提供 ...

最新文章

  1. /var/lib/docker/overlay2/xxxxx no such file or directory docker文件删除引发的问题
  2. matlab GUI 初学
  3. Struts2框架原理
  4. Fegion-3覆写Fegion的默认配置及Fegion的日志
  5. VC++中进程与多进程管理的方法[转]
  6. 互金策略若干问题(全)
  7. 【leetcode】25. Reverse Nodes in k-Group 链表按K分段逆序
  8. 编译SONiC交换机镜像(转,参考2)
  9. 动态规划(Dynamic Programming)理论篇
  10. 看懂Oracle的执行计划
  11. win10局域网加入工作组计算机,Win10专业版加入局域网工作组的技巧
  12. 卷积神经网络以LeNet网络为例的手写体识别
  13. SD卡数据被误删除该怎么恢复?
  14. django-查询语句(一)
  15. 高云FPGA系列教程(2):FPGA点灯工程创建、程序下载和固化
  16. 设计模式-适配器模式(类适配器、对象适配器、接口适配器详解)
  17. 神经机器翻译(Neural machine translation, NMT)学习笔记
  18. 电脑重启f12怎么处理_联想电脑开机按f12后,怎么设置默认启动项
  19. Excel无法打开文件xxx.xlsx,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配
  20. 高性能,高扩展,高可用架构

热门文章

  1. 批处理判断文件夹是否存在
  2. 用ArrayList作数据源为ComboBox绑定,带“请选择...”
  3. 没有实现类,MyBatis 的方法是怎么执行的?
  4. Redis中的代理Sharding
  5. 阿里云OSS-对象存储流程梳理演示
  6. 对称加密-DES加密
  7. byte和bit的关系
  8. 脚手架工程:介绍安装
  9. 数组工具类Arrays
  10. 封装案例-完成开火方法