我有一个异步监听网络的程序,将连接到的客户端Socket保存到Hashtable,当点停止监听时遍历Hashtable,逐个Shutdown(),然后Close(),我希望这时服务器端不再接收任何连接,不过不知道如何断开服务端,导致被客户端的客户端还可以连接。public void StartListening()
{
byte[] bytes = new byte[1024];
listener = new Socket( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp ); try
{
if ( !listener.IsBound )
{
listener.Bind( localServer );
listener.Listen( 400 );
} while ( forever )
{
// 设置事件为无信号状态
allDone.Reset(); // 开始异步监听连接
listener.BeginAccept( new AsyncCallback( AcceptCallback ), listener ); // 等待一个连接直到继续
allDone.WaitOne();
}
}
catch ( Exception e )
{
Console.WriteLine( e.ToString() );
}
}这个方法是在一个线程中开始调用的。
{
byte[] bytes = new byte[1024];
listener = new Socket( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp ); try
{
if ( !listener.IsBound )
{
listener.Bind( localServer );
listener.Listen( 400 );
} while ( forever )
{
// 设置事件为无信号状态
allDone.Reset(); // 开始异步监听连接
listener.BeginAccept( new AsyncCallback( AcceptCallback ), listener ); // 等待一个连接直到继续
allDone.WaitOne();
}
}
catch ( Exception e )
{
Console.WriteLine( e.ToString() );
}
}这个方法是在一个线程中开始调用的。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货