两种服务器socket异步监听的比较??
我在写一个web的代理服务器,我想要不断的监听
客户端发来的请求,请问下面两种方法比较好??
btw:截获到的客户端socket是要作为参数传递到proxy类的
////////////////////////////////////////////////第一种
socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
IPEndPoint iep=new IPEndPoint(IPAddress.Any,8000);
socket.Bind(iep);
socket.Listen(10);
Thread th1=new Thread(new ThreadStart(AcceptConnection1));
th1.Start();
/////
private void AcceptConnection1()
{
while (true)
{
Done.Reset();
this.socket.BeginAccept(new AsyncCallback(AcceptConnection2),this.socket);
Done.WaitOne();
}
}
////
private void AcceptConnection2(IAsyncResult ar)
{
Done.Set();
Socket server=(Socket)ar.AsyncState;
Socket client=server.EndAccept(ar);
Proxy proxy=new Proxy(client);
Thread thread=new Thread(new ThreadStart(proxy.Run));
thread.Start();
}
//////////////////////////////////第二种
socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
IPEndPoint iep=new IPEndPoint(IPAddress.Any,8000);
socket.Bind(iep);
socket.Listen(10);
Thread th1=new Thread(new ThreadStart(AcceptConnection1));
th1.Start();
/////
private void AcceptConnection1()
{
Done.Reset();
this.socket.BeginAccept(new AsyncCallback(AcceptConnection2),this.socket);
Done.WaitOne();
}
////
private void AcceptConnection2(IAsyncResult ar)
{
Done.Set();
Socket server=(Socket)ar.AsyncState;
Socket client=server.EndAccept(ar);
Proxy proxy=new Proxy(client);
Thread thread=new Thread(new ThreadStart(proxy.Run));
thread.Start();
this.socket.BeginAccept(new AsyncCallback(AcceptConnection2),this.socket);
}