本帖最后由 iloli 于 2013-11-25 20:18:22 编辑

解决方案 »

  1.   

    以非同步方式接受連入的連接嘗試,並建立新的 TcpClient 來處理遠端主機通訊。
      

  2.   

    http://msdn.microsoft.com/zh-tw/library/system.net.sockets.tcplistener.endaccepttcpclient(VS.80).aspx
      

  3.   

    没明白。我服务端代码不是异步接受连接吗? 服务端的Tcpclient是由EndAcceptTcpClient返回的,客服端的每次都new过了一个新的Tcpclient啊。
      

  4.   

    没明白。我服务端代码不是异步接受连接吗? 服务端的Tcpclient是由EndAcceptTcpClient返回的,客服端的每次都new过了一个新的Tcpclient啊。
    看下MSDN 给的例子,一切就豁然了
      

  5.   

    没明白。我服务端代码不是异步接受连接吗? 服务端的Tcpclient是由EndAcceptTcpClient返回的,客服端的每次都new过了一个新的Tcpclient啊。
    看下MSDN 给的例子,一切就豁然了给直接给个链接吗 例子不好找啊
      

  6.   

    先说重点的吧。你的所谓 client 变量的定义,使得多个线程执行时可能共享/冲突。再说次要的。实际上异步BeginXXX操作就不需要什么while语句、以及while里边还要嵌套一个死循环,这种东西!
      

  7.   

    那client要怎么定义?
    我试过用标准的示例 IAsyncResult iar = tcpListener.BeginAcceptTcpClient(asyncAccept, tcpListener)
    这样用委托来执行是不会有问题。那我IAsyncResult iar = tcpListener.BeginAcceptTcpClient(null, null);这种方式,再通过  
                     while (!iar.IsCompleted)
                    {
                        Thread.Sleep(sleepMilliseconds);
                    }
                        client = tcpListener.EndAcceptTcpClient(iar);
    得到client 怎么就会在多次请求时失败?