多线程以及网络
本人遇到一个技术问题,要求就是多个客户端如果同时访问服务器,不会有问题,我的方法是采用异步非阻塞,部分代码如下:
private static ManualResetEvent Done = new ManualResetEvent(false);
socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
try
{
socket.Bind(endPoint);
socket.Listen(10);//allow a queues of 5 connections
exeProc.Items.Add("Waiting for a connecting...");
_threadProcess=new Thread(new ThreadStart(Target));
_threadProcess.Start();
while(!_threadProcess.IsAlive);
} catch(Exception err)
{
exeProc.Items.Add(err.Message);
}
}
private void Target()
{
while(true)//listen loop
{
Done.Reset();//Sets the state of the specified event to nonsignaled.
socket.BeginAccept(new AsyncCallback (CallAccept),socket);
Done.WaitOne();
}
}
private void CallAccept(IAsyncResult iAsyResult)
{
Done.Set();
....
}
我用BeginAccept,EndAccept,还有BeginReceive等等
问题出在当我把done。Reset()和Done。WaitOne()去掉后所占用内存很大,大概170M,想想这怎么行,我要同时运行几个阿,但是如果不去掉,那么只能一个一个的执行,各位有什么意见。如果我的方法不当,请各位多加指点。谢谢