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 P5514 [MtOI2019]永夜的报应
题目背景 在这世上有一乡一林一竹亭,也有一主一仆一仇敌. 有人曾经想拍下他们的身影,却被可爱的兔子迷惑了心神. 那些迷途中的人啊,终究会消失在不灭的永夜中-- 题目描述 蓬莱山 辉夜(Kaguya)手 ...
- play-with-docker搭配ffsend完成文件上传及下载(解决从docker hub拉取镜像慢问题)
由于众所周知的原因,大家有的时候pull docker hub上的镜像是很困难的,下载到99%就这么不动了也是很正常的事情 这个时候以下步骤是100%可以解决问题的: 1.找一台国外的服务器安装doc ...
- 使用 Spring 提供的 restTemplate 完成 Http 服务消费
RestTemplate 介绍 RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访问远程 Http 服务的方法,能够大大提高 ...
- eviews面板数据的操作
数据结构: 打开eviews File>new>workfile Object>new object > pool 输入城市名称: _bj 下划线加名称(必须是英文),竖着输入 ...
- ARTS-S 做事情的正确方法
有同学改bug的思路是:你们别管我怎么改,先看改的效果对不对.效果对,就这样改,效果不对,我再想别的办法.这样其实把自己关起来,盲目试错,效率太低. 合理的方法应该是和其他大佬们商量一个大家认为正确的 ...
- ARTS-S CentOS 7 minimal 版本安装后网络配置
用root登录服务器,执行 nmcli d 可以看到ethernet disconnected,网卡是处于禁用状态.执行 nmtui 选Edit a connection-Edit,选中Automat ...
- Python3 类的继承小练习
1.打印并解释结果 class Parent(object): x = 1 class Child1(Parent): pass class Child2(Parent): pass print(Pa ...
- 【Ubuntu 16.04.2_64】安装配置SVN
[Ubuntu 16.04.2_64]安装配置SVN 转载:https://www.cnblogs.com/yangchongxing/p/10190549.html 检查是否已安装svn # svn ...
- 深入浅出分析 PriorityQueue
一.摘要 在前几篇文章中,咱们了解到,Queue 的实现类有 ArrayDeque.LinkedList.PriorityQueue. 在上一章节中,陆续的介绍到 ArrayDeque 和 Linke ...
- Linux搭建NFS服务
一.NFS服务简单介绍 NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源.在NFS的应用中, ...