新手请教Socket连接超时问题,非读取超市或写入超时 100分
使用Socket进行网络编程时,发现如果网页无法连接时,系统等待大概为20秒.觉得这个时间太长了,请教缩短的方法,最好能有代码.
又及,请大家介绍下关于c#Socket编程或c#多线程编程方面的资料.
------解决方案--------------------up
------解决方案--------------------可以自己设置时间限制,waiting之类的函数,你查查.这个不难,在你的代码里添加几条语句就可以实现了.
------解决方案--------------------帮顶
------解决方案--------------------mark
------解决方案--------------------不难?调用函数?你自己试过没?
我搞了半天还没找出比较清晰的答案
那个TIMEOUT根本没什么用,也不能直接终止线程,网上说的要什么异步连接等等的,好麻烦
------解决方案--------------------直接TIMEOUT。。表搞得那么复杂。。。
------解决方案--------------------timeout不是总时间,你把timeout设置成5秒,可能25秒后都还在测试连接
public static ManualResetEvent allDone =new ManualResetEvent(false);
       public static void ConnectCallback1(IAsyncResult ar)
       {
           allDone.Set();
           Socket s = (Socket)ar.AsyncState;
           try
           {
               s.EndConnect(ar);
               s.Close();
               s = null;
           }
           catch
           {
           }
       }  
       public void Scan()
       {          
           Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
           allDone.Reset();
           try
           {
               s.BeginConnect(m_host, 80, new AsyncCallback(ConnectCallback1), s);
           }
           catch
           {
           }
           // wait here until the connect finishes.  The callback  
           // sets allDone.
           allDone.WaitOne(timeout, false);
//连接成功就到这来
------解决方案--------------------s.accepttimeout=10