设置超时,timeout,socket
来源:互联网 发布:缩小手机屏幕的软件 编辑:程序博客网 时间:2024/05/23 09:40
除了C#某些自带的timeout设置以外,有时也需要对某个请求设置超时时间(比如soket)。
例子如下:
方法介绍:需判断某个值是否已经存在(soket访问其他服务),等待放回结果,但若时间过长,则无需等待了。
// 判断CRS订单是否重复 public bool IsDuplicate(string crsresvID) { string result = string.Empty; RefObject refobject = new RefObject(); refobject.flag = true; try { //VerifyCRSResvIDTimeOut参数表示调用callback之前的时间延迟量 //System.Threading.Timeout.Infinite表示无限长等待时间,以保证该callback只执行一次 System.Threading.Timer timer = new System.Threading.Timer(new TimerCallback(SetFlag), refobject, VerifyCRSResvIDTimeOut,System.Threading.Timeout.Infinite); Thread thread = new Thread(() => { //创建终结点IPEndPoint IPAddress ip = IPAddress.Parse(VerifyCRSResvIDServer); IPEndPoint ipe = new IPEndPoint(ip, VerifyCRSResvIDPort);<pre class="csharp" name="code"> //创建Socket并连接到服务器 Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.Connect(ipe); //连接到服务器 //向服务器发送信息 string sendStr = crsresvID; byte[] sendBytes = Encoding.UTF8.GetBytes(sendStr); socket.Send(sendBytes, sendBytes.Length, 0); //接受从服务器返回的信息 byte[] recvBytes = new byte[1024]; int bytes = socket.Receive(recvBytes, recvBytes.Length, 0); string recvStr = Encoding.UTF8.GetString(recvBytes, 0, bytes);//服务端返回数据:a,True b,False socket.Close(); result = recvStr; }); thread.Start(); while (true) { if (refobject.flag == false) { return false; } if (!string.IsNullOrWhiteSpace(result)) { break; } } return result == "True"; } catch (Exception e) { Logger.Instance.WriteLog(string.Format("判断CRS订单是否重复异常!{0}\r\n{1}", e.Message, e.StackTrace)); //若出现异常,则返回不重复,因为除节假日外,重复的几率很小 return false; } }public void SetFlag(object o) { RefObject refObject = new RefObject(); refObject = o as RefObject; refObject.flag = false; } public class RefObject { public bool flag { get; set; } }
0 0
- 设置超时,timeout,socket
- socket 设置TimeOut
- C#Socket开发“网络连接超时设置Timeout”,解决网络连接速度过慢的问题
- 网络的connect如何超时设置?MFC socket异步 timeout select
- 网络的connect如何超时设置?MFC socket异步 timeout select
- HDFS socket timeout时间设置
- [VB.NET]设置remoting超时timeout代码
- weblogic设置session-timeout超时时间
- python TCPServer, StreamRequestHandler设置超时时间timeout
- Socket设置连接超时
- socket设置超时时间
- 设置socket超时连接
- 设置socket超时连接
- 设置socket超时时间
- socket超时设置
- socket 设置超时
- Socket设置超时
- socket 设置阻塞超时
- 双向链表
- Linux笔记(第5,6,7章)
- jsonp其实很简单【ajax跨域请求】
- 使用 全连接神经网络 和 词袋模型 进行文本分类的example
- apache 2.4 配置多个端口监听的方法
- 设置超时,timeout,socket
- 乐视的未来押在电视上,电视成则乐视成
- 对缓存的思考——提高命中率
- 数据结构
- uva1151 Buy or Build
- STM32移植lwip之建立tcp服务器
- 预编译——关于#和##
- session还是cookie
- Android多线程下载服务器资源