日期:2014-05-18  浏览次数:20709 次

新手请教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