C# TcpListener 监听自动停止(急急急)

自写的Socket监听程序,放到外网服务器上面后,监听一段时间(特别是人多的时候),会出现监听不到数据的情况,代码如下:listener=newTcpListener(S... 自写的 Socket 监听程序,放到外网服务器上面后,监听一段时间(特别是人多的时候),会出现监听不到数据的情况,代码如下:listener = new TcpListener(ServerIP, iPortNum);listener.Start();Thread th = new Thread(new ThreadStart(ListenThreadMethod));th.Start();private void ListenThreadMethod(){while(! toDispose)  { if(this.stateIsStop){Thread.Sleep(100) ;continue ;}if(! this.tcpListener.Pending()){Thread.Sleep(100) ;continue ;} TcpClient tcp_client = this.tcpListener.AcceptTcpClient() ;if(this.TcpConnectionEstablished != null){this.TcpConnectionEstablished(tcp_client.GetStream()) ;}} this.manualEventDispose.Set() ;}下面是this.TcpConnectionEstablished(tcp_client.GetStream())事件触发后所调用的方法private void esfTcpListener_TcpConnectionEstablished(System.Net.Sockets.NetworkStream stream){ISafeNetworkStream safeStream = new SafeNetworkStream(stream) ;ContextKey key = new ContextKey(safeStream ,this.recieveBuffSize) ; this.contextKeyManager.InsertContextKey(key) ;int connectID = key.NetStream.GetHashCode() ;if(this.SomeOneConnected != null){this.SomeOneConnected(connectID) ;} key.NetStream.NetworkStream.BeginRead(key.Buffer ,0 ,this.contractHelper.MessageHeaderLength ,new AsyncCallback(this.ServeOverLap) ,key) ; }停止监听后,客户端还是可以通过下面代码与服务器建立连接TcpClient client = new TcpClient();IPAddress[] ipaddr = Dns.GetHostAddresses(this.serverIP);client.Connect(ipaddr[0], this.port);NetworkStream stream = client.GetStream();出现问题后原来已经和服务器端建立了连接的用户,收发数据都没问题;但是新建立的连接不能收发数据。不知道是不是是不是BeginRead这个有异常没有处理,还是防火墙或者机器设置的问题或者机房硬件防火墙的问题呢?希望各位大侠帮忙啊!!!!! 展开
 我来答
乾又蓝0d0q6
2011-11-20 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:150
采纳率:0%
帮助的人:79万
展开全部
加上异常处理试试吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式