C# Socket连接超时设置_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > C# Socket连接超时设置

C# Socket连接超时设置

 2013/10/30 17:12:55  罗松超  博客园  我要评论(0)
  • 摘要:问题描述:       对于C#Socket没有超时设置的选项,默认情况下进行Socket连接,返回连接失败需要20-30s时间,严重影响用户体验问题解决:Socket服务器端:Socket客户端:IAsyncResult.AsyncState返回一个对象,该对象时启动异步操作的方法的最后一个参数注:   在Socket客户端进行超时连接的设置,异步连接,设置连接处理的回调函数,以及超时的处理
  • 标签:C# 连接 超时 socket

问题描述:

        对于C# Socket没有超时设置的选项,默认情况下进行Socket连接,返回连接失败需要20-30s时间,严重影响用户体验

问题解决:

Socket服务器端:

clipboard

clipboard[1]

Socket客户端:

clipboard[2]clipboard[3]clipboard[4]

IAsyncResult.AsyncState 返回一个对象,该对象时启动异步操作的方法的最后一个参数

clipboard[5]

注:

    在Socket客户端进行超时连接的设置,异步连接,设置连接处理的回调函数,以及超时的处理。

ManualResetEvent的WaitOne(TimeSpan, Boolean)起到了主要的作用。它将阻止当前线程,直到ManualResetEvent对象被Set或者超过timeout时间。上面的代码中,调用BeginConnect后通过WaitOne方法阻止当前线程,如果在timeoutMSec时间内连接成功,将在CallBackMethod回调中调用TimeoutObject.Set,解除被阻塞的连接线程并返回;否则,连接线程会在等待超时后,主动关闭连接并抛出TimeoutException。

参考资料:

http://www.cnblogs.com/weidagang2046/archive/2009/02/07/1385977.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异步通信:

http://www.cnblogs.com/llllll/archive/2009/05/13/1455703.html

http://www.cnblogs.com/sunev/archive/2012/08/07/2625688.html

源程序文件:

Server.csClient.cs

上一篇: 计算机终会“消失” 下一篇: 没有下一篇了!
发表评论
用户名: 匿名