C# SendAysnc 超时
业务方法
@@@code
public
override
async Task<List<(IPEndPoint endPoint, byte[] data)>> SendAsync(IPEndPoint server, byte[] data2, int getResponseCount = 1)
{ //随机使用端口,支持并发 using (UdpClient udpClient = new UdpClient(LocalIPEndPoint)) //广播包在有虚拟机的时候必须指定有效网卡
{ //多网卡容易丢包
udpClient.Client.SendTimeout = SendTimeout;
udpClient.Client.ReceiveTimeout = ReceiveTimeout; byte[] data = IsEncrypt ? Encrypt(data2) : data2; try
{ int sendLength = await udpClient.SendAsync(data, data.Length, server); //int sendLength = 0; //udpClient.SendAsync(data, data.Length, server).Wait(SendTimeout); //同步方法
Log?.Invoke($"send:{server.ToString()},Len:{sendLength}/{data.Length},Data:{new Q.Mina.IoBuffer(data).getHexDump()}"); udpClient.Close(); return result;
} catch (Exception ex)
{ return
null;
}
} }
@@#
对上述方法调用,可以使用三种方式
异步,业务方法正常执行,超时处理正常,推荐使用此方法
@@@code
var result = await
new Q.Sockets.UDPHelper2() { LocalIPEndPoint = localIP, ReceiveTimeout = 1000 }.SendAsync(ip, data, 1000);
@@#
同步,超时未生效,一直处于等待状态,除非方法内使用udpClient.SendAsync(data, data.Length, server).Wait(SendTimeout); //同步方法
@@@code
new Q.Sockets.UDPHelper2() { LocalIPEndPoint = localIP, ReceiveTimeout=1000 }.SendAsync(ip, data, 1000).Result
@@#
等待指定时间,强行在外部指定超时,打断了业务方法的执行时间(如接收大量数据)
@@@code
var x = new Q.Sockets.UDPHelper2() { LocalIPEndPoint = localIP, ReceiveTimeout = 1000 }.SendAsync(ip, data, 1000);
x.Wait(3000);
if (x.IsCompleted)
{
show(x.Result);
}
@@#
C# SendAysnc 超时的更多相关文章
- 【腾讯Bugly干货分享】微信终端跨平台组件 mars 系列(二) - 信令传输超时设计
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/9DJxipJaaBC8yC-buHgnTQ 作者简介: ...
- SQL Server Management Studio 无法修改表,超时时间已到 在操作完成之前超时时
在修改表时,保存的时候显示:无法修改表,超时时间已到 在操作完成之前超时时间已过或服务器未响应 这是执行时间设置过短的原因,可以修改一下设置便能把执行时间加长,以便有足够的时间执行完修改动作. 在 S ...
- Java接口响应超时监控
为什么要监控 服务化接口是提供服务的,接口正确性.稳定性是最最重要的,在保证正确的同时需要尽量提高接口响应时间. 有的团队会有专门的工具来对系统响应时间.吞吐量做监控,但如果团队没有这种"待 ...
- 如何写出安全的API接口(参数加密+超时处理+私钥验证+Https)- 续(附demo)
上篇文章说到接口安全的设计思路,如果没有看到上篇博客,建议看完再来看这个. 通过园友们的讨论,以及我自己查了些资料,然后对接口安全做一个相对完善的总结,承诺给大家写个demo,今天一并放出. 对于安全 ...
- Apache服务停止:信号灯超时时间已到,指定的网络名不再可用
环境说明:Apache2.4.10,Windows Server 2008 R2 问题说明: apache服务用于下载文件,但是在运行一段时间后,突然挂了. 其错误提示如下所示: [error] (7 ...
- C# 提交网页请求时出现如下错误: System.Net.WebException: 操作超时
原因一: 连接超时时间 Timeout 以及写入Post数据超时时间 ReadWriteTimeout 设置得太短,一般要设置大于6000ms. 原因二: Expect100Continue 属性的值 ...
- go http.Get请求 http.Post请求 http.PostForm请求 Client 超时设置
http中有Get/Post/PostForm方法 也可以通过http包中设置client 请求配置 ,然后通过client.Do方法实现请求 下demo中功能都实现,其中有详细说明: package ...
- 关于MySQL的wait_timeout连接超时问题报错解决方案
bug回顾 : 想必大家在用MySQL时都会遇到连接超时的问题,如下图所示: ### Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsExce ...
- 调用WebServices超时
1. 服务器端设置超时 在 web.config 的 system.web 里添加如下配置项: < httpRuntimeexecutionTimeout="300000"/ ...
随机推荐
- luogu P2783 有机化学之神偶尔会做作弊 |Tarjan+LCA
题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人. 有一天他一边搓炉石一边监考,而你作为一个信息竞赛的大神也来凑热闹. 然而你的化竞基友却向你求助了. "第1354题怎么做"&l ...
- Objective-C面试题(精心整理的,附答案)
转自:http://www.mianwww.com/html/2014/03/20372.html 1.objective-c 是所有对象间的交互是如何实现的? 在对象间交互中每个对象承担的角色不同, ...
- 胸部CT提取分割肺部
1. 肺部分割提取简介 在处理胸部CT时,我们常常需要获取肺部的一个mask,也就是将肺部结构从数据中提取出来.二维图像还好说,但是三维图像就会变得复杂复杂一点.肺部的分割常常做后续操作的预处理,所以 ...
- C# 导出pdf(浏览器不预览直接下载)
一.接口部分的代码 [HttpGet] public HttpResponseMessage ExportPdf(string id) { string pdfName = ""; ...
- 大数据学习笔记——Linux基本知识及指令(理论部分)
Linux学习笔记整理 上一篇博客中,我们详细地整理了如何从0部署一套Linux操作系统,那么这一篇就承接上篇文章,我们仔细地把Linux的一些基础知识以及常用指令(包括一小部分高级命令)做一个梳理, ...
- docker-compose部署
一.部署compose docker compose可以方便我们快捷高效地管理容器的启动.停止.重启等操作,它类似于linux下的shell脚本,基于yaml语法,在该文件里我们可以描述应用的架构,比 ...
- 《Java基础知识》Java继承的概念和实现
继承时类和类之间的关系,是一个很简单很直观的概念,与显示生活中的继承(例如儿子继承了父亲财产)类似. 继承可以理解为一个类从另一个类中获取方法和属性的过程.如果类B继承于类A,那么类B就拥有类A的属性 ...
- ubuntu14.04编译vim8.1
安装依赖 这一步其实我没做,直接下载编译成功了.估计有些包不是必需的.姑且列在这里供参考 sudo apt install libncurses5-dev libgnome2-dev libgnome ...
- Dynamics 365中使用计算字段自动编号字段实时工作流自动生成分组编码加流水号的自动编号字段值
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- 使用git将本地java项目上传到GitHub
使用git将项目上传到github(最简单方法) 声明:本人是根据上文给的链接的方式,上传到github上的,亲测有效. 首先你需要一个github账号,所有还没有的话先去注册吧! https://g ...