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

关于WSACancelBlockingCall在使用TcpListener中的问题
我在一个线程里使用了TcpListener的AcceptSocket方法来侦听是否有客户端的连接请求,但是在调用TcpListener的Stop方法是会弹出一个对话框说 "一个封锁操作被对   WSACancelBlockingCall的调用中断 ",这是怎么回事?而且,似乎Stop并没有让TcpListener停止监听,我还是可以发送消息!

线程中是这样用的:
                        try
                        {
                                listener.Start();


                                while   (!mStop)
                                {

                                        Socket   s   =   listener.AcceptSocket();
                                        NetworkStream   nStream   =   new   NetworkStream(s);
                                        StreamReader   stream   =   new   StreamReader(nStream);
                                        String   msg   =   stream.ReadLine();
                                        WriteMsg(msg);

                                        stream.Close();
                                        nStream.Close();
                                        s.Close();

                                }

                        }
                        catch
                        {
                                //
                        }

停止监听是在一个button的Click事件里执行,代码就是:
                        mStop   =   true;
                        try
                        {
                                listener.Stop();
                        }