C# Socket连接超时设置
2013-10-30 16:17
246 查看
问题描述:
对于C# Socket没有超时设置的选项,默认情况下进行Socket连接,返回连接失败需要20-30s时间,严重影响用户体验
问题解决:
Socket服务器端:
Socket客户端:
IAsyncResult.AsyncState 返回一个对象,该对象时启动异步操作的方法的最后一个参数
注:
在Socket客户端进行超时连接的设置,异步连接,设置连接处理的回调函数,以及超时的处理。
ManualResetEvent的WaitOne(TimeSpan, Boolean)起到了主要的作用。它将阻止当前线程,直到ManualResetEvent对象被Set或者超过timeout时间。上面的代码中,调用BeginConnect后通过WaitOne方法阻止当前线程,如果在timeoutMSec时间内连接成功,将在CallBackMethod回调中调用TimeoutObject.Set,解除被阻塞的连接线程并返回;否则,连接线程会在等待超时后,主动关闭连接并抛出TimeoutException。
参考资料:
/article/4872892.html
http://www.codeproject.com/Articles/31514/Implementation-of-Connecting-a-Socket-with-Timeout
http://msdn.microsoft.com/zh-cn/library/system.threading.manualresetevent(v=vs.95).aspx
C# Socket异步通信:
/content/4520431.html
/article/5123478.html
源程序文件:
对于C# Socket没有超时设置的选项,默认情况下进行Socket连接,返回连接失败需要20-30s时间,严重影响用户体验
问题解决:
Socket服务器端:
Socket客户端:
IAsyncResult.AsyncState 返回一个对象,该对象时启动异步操作的方法的最后一个参数
注:
在Socket客户端进行超时连接的设置,异步连接,设置连接处理的回调函数,以及超时的处理。
ManualResetEvent的WaitOne(TimeSpan, Boolean)起到了主要的作用。它将阻止当前线程,直到ManualResetEvent对象被Set或者超过timeout时间。上面的代码中,调用BeginConnect后通过WaitOne方法阻止当前线程,如果在timeoutMSec时间内连接成功,将在CallBackMethod回调中调用TimeoutObject.Set,解除被阻塞的连接线程并返回;否则,连接线程会在等待超时后,主动关闭连接并抛出TimeoutException。
参考资料:
/article/4872892.html
http://www.codeproject.com/Articles/31514/Implementation-of-Connecting-a-Socket-with-Timeout
http://msdn.microsoft.com/zh-cn/library/system.threading.manualresetevent(v=vs.95).aspx
C# Socket异步通信:
/content/4520431.html
/article/5123478.html
源程序文件:
相关文章推荐
- 【c#】设置Socket连接、接收超时
- C#中设置Socket连接请求的超时
- c# socket连接请求超时设置
- 【c#】设置Socket连接、接收超时(转)
- C#中设置Socket连接请求的超时
- Socket中如何设置连接超时
- [译]C# Socket连接请求超时机制
- C# Socket连接请求超时机制
- socket连接设置超时的几种方法
- 设置socket超时连接
- 【转载】Socket中如何设置连接超时-通过测试(VC)
- 基于XSocket框架的socket编程技巧(设置连接的超时时间和最大空闲时间)
- C# Socket连接请求超时机制
- c# ManualResetEvent 解决socket连接超时问题
- Socket 关于设置Socket连接超时时间
- c#关于socket连接超时控制的方案
- Socket中如何设置连接超时-通过测试(VC)
- C# Socket连接请求超时机制实现代码分享
- Java中Socket设置连接超时的代码分享
- Java中设置Socket连接超时