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

quans0917 2010-11-03 08:11:03
自写的 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();
但是服务器端的key.NetStream.NetworkStream.BeginRead一直获取不到数据。

是不是BeginRead这个有异常没有处理,还是防火墙或者机器设置的问题或者机房硬件防火墙的问题呢?


希望各位大侠帮忙啊!!!!!
...全文
800 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
quans0917 2010-11-03
  • 打赏
  • 举报
回复
没人帮忙啊?自己顶,55555
quans0917 2010-11-03
  • 打赏
  • 举报
回复
没人帮忙啊?自己顶,55555
quans0917 2010-11-03
  • 打赏
  • 举报
回复
是一个bool变量,关闭的服务器端的时候就设置成false了,就是在出现问题之前与服务器建立了链接的客服端收发数据都没问题。但是在服务器出现问题之后,建立的连接,就出现了问题哦。

这些代码都是ESFramework这个框架里面的,现在很郁闷,用这个。
LutzMark 2010-11-03
  • 打赏
  • 举报
回复
toDispose在什么情况下为false了?

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧