使用Receive(同步阻塞方式), 注意使用同步方法时,需要使用线程来开始方法,不然会使UI界面卡死

            IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 5858);UdpClient udpClient = new UdpClient(RemoteIpEndPoint);while (true) //由于Receive方法是阻塞方法,一个Receive操作完了后才能继续往下执行,所以能在这里使用死循环
            {Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint);string msg = Encoding.UTF8.GetString(receiveBytes);}

使用BeginReceive(异步)

               private static void InitializeUdpClient()
              {                               IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 5858);UdpClient udpClient = new UdpClient(RemoteIpEndPoint);//如果这里写while(true) 则会不停挂起异步接收操作,直到占满缓冲区间或队列。会报“由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作”的错UdpState s = new UdpState(udpClient, RemoteIpEndPoint);udpClient.BeginReceive(EndReceive, s);}private static void EndReceive(IAsyncResult ar){try{UdpState s = ar.AsyncState as UdpState;if (s != null){UdpClient udpClient = s.UdpClient;IPEndPoint ip = s.IP;Byte[] receiveBytes = udpClient.EndReceive(ar, ref ip);string msg = Encoding.UTF8.GetString(receiveBytes);udpClient.BeginReceive(EndReceive, s);//在这里重新开始一个异步接收,用于处理下一个网络请求
                }}catch (Exception ex){//处理异常
            }}public class UdpState{private UdpClient udpclient = null;public UdpClient UdpClient{get { return udpclient; }}private IPEndPoint ip;public IPEndPoint IP{get { return ip; }}public UdpState(UdpClient udpclient, IPEndPoint ip){this.udpclient = udpclient;this.ip = ip;}}

转载于:https://www.cnblogs.com/xyz0835/p/3835667.html

C# UdpClient使用Receive和BeginReceive接收消息时的不同写法相关推荐

  1. OSE RTOS中APP进程接收消息机制

    在OSE运行的APP进程均有一个PCB结构体,结构体中包含了指向该进程signal list的指针,是一个链表,实际上是指向链表的头指针与尾指针,头指针结构中包含指向下一个signal的next指针. ...

  2. sql server 服务器之间传递消息,SQL Server 2008 Service Broker教程 - 无法接收消息(transmission_status中的异常)...

    我正在学习如何使用SQL Server 2008 R2的Service Broker.在完成单个数据库中的完成对话教程时.在第1课之后,我成功创建了消息类型,合同,队列和服务.在第2课之后,我可能已经 ...

  3. iOS 当APP接收到推送消息时,对推送消息进行处理

    结合最近做的项目来总结一下,在我们接收到推送通知后我们将要怎么处理这条推送消息,也为以后再做相关推送的时候能够更快处理. 首先要说明两个概念:本地通知和远程推送.本地通知是由本地应用触发的,接收会比较 ...

  4. 微信公众号回复、接收消息中中文乱码问题的分析及解决

    微信公众号回复.接收消息中文乱码问题的分析及解决 为了方便,我们把接收时用的编码记为A.把处理时用的编码记为B.把返回时用的编码记为C 文章目录 微信公众号回复.接收消息中文乱码问题的分析及解决 中文 ...

  5. Netty:实现同步发送并接收消息的一种方式

    Netty创建通信服务时使用Nio异步通信, 配置代码(bootstrap.channel(NioSocketChannel.class);),要怎样实现这样一个同步发送消息并接收消息功能,虽然这样做 ...

  6. Scala Actor,receive不断接收消息,react复用线程,结合case class的actor,Future使用,使用Actor进行wordCount

    Scala Actor 二. 什么是Scala Actor 1. 概念 Scala中的Actor能够实现并行编程的强大功能,它是基于事件模型的并发机制,Scala是运用消息(message)的发送.接 ...

  7. c#UDP发送接收消息

    UDP作为一种简单的.面向数据报的无连接的协议,虽然提供的是不可靠的服务,但是从速度上.一对多传输方面比TCP有着很大的优势.本文主要讲解UDP信息的发送和接收. Demo界面图如下: 首先打开程序e ...

  8. Unity丛林战争学习01_TCP_异步接受连接和异步接收消息

    1.服务器端 服务器端所要做的事: ①创建服务器端套接字(Socket) ②绑定套接字(Bind) ③监听连接(Listen) ④异步接受连接(BeginAccept) ⑤结束异步接受连接,返回客户端 ...

  9. Akka 接收消息超时的处理_Receive Timeout

    2019独角兽企业重金招聘Python工程师标准>>> Akka 接收信息超时的处理_Receive Timeout The UntypedActorContext setRecei ...

最新文章

  1. 大家谈谈公司里的项目经理角色及职责都是干什么的?
  2. 使用 TiKV 构建分布式类 Redis 服务
  3. php读取html中元素属性,读写HTML元素的css 属性
  4. vue 模板字符串循环_使用React四年后转而使用Vue,是一种什么样的体验?
  5. 有多个路由器的子网的分配
  6. 使用Win Server 2012 R2的IIS创建FTP
  7. Bitmap对图像的处理
  8. python seo 外链_百度链接提交-主动推送程序Python版
  9. gridview的表头固定
  10. 程序员删库后发同学群问如何恢复,同学:跑路吧,记得跑快点
  11. 一文搞懂MySQL索引所有知识点(建议收藏)
  12. 配置git mergetool不产生*.orig文件
  13. 导弹防御系统java_导弹防御问题 动态规划 java
  14. Educational Codeforces Round 126 (Rated for Div. 2)(A-E)
  15. 阿里云合作伙伴查询合作流程
  16. openswan中的in_struct和out_struct函数
  17. 生产排程计划面临哪些问题?如何有效解决?
  18. Entity Linking with a Knowledge Base:Issues, Techniques, and Solutions笔记
  19. Renamer给文件名倒序
  20. Activiti工作流与业务整合实战

热门文章

  1. 电子邮件地址抓取工具
  2. 微信小程序 navigator 用来实现页面跳转功能
  3. Mybatis中查询结果resultMap使用分析
  4. java基础—Runtime类使用
  5. 使用RTL-SDR,从打开一个车门到批量打开车门
  6. HDwiki 6.0 图片大图不能正常显示的解决方法
  7. cf Round 613
  8. 专业App开发:设计App图标的三个关键点
  9. burp 代理的时候无法访问https网站
  10. phpexcel常见问题的解决办法