Пример #1
0
        public void StartListening()
        {
            // Client Connections Pool
            ClientConnectionPool ConnectionPool = new ClientConnectionPool()  ;

            // Client Task to handle client requests
            ClientTask = new ClientService( ConnectionPool, numOfThread ) ;

            ClientTask.Start() ;

            TcpListener listener = null;
            listener = new TcpListener( IPAddress.Any, portNum );
            try
            {
            listener.Start();

            int ClientNbr = 0 ;

            // Start listening for connections.
            Console.WriteLine("Port {0} waiting for a connection...", portNum );
            while ( !stop )
            {
            //		Thread.Sleep(50);
                //System.Net.Sockets.Socket socket = listener.AcceptSocket();
            //			TcpClient tcpHandler = listener.AcceptTcpClient();
                //TcpClientBis t2 = (TcpClientBis)Convert.ChangeType( tcpHandler, typeof(TcpClientBis));
                TcpClientBis tcpHandler = new TcpClientBis( listener.AcceptSocket() );// socket );

                if (  tcpHandler != null)
                {

                    if ( tcpHandler.ReceiveBufferSize == 0 )
                    {
                        Console.WriteLine( "Socket error !" );
                        tcpHandler.Close();
                    }
            //				Console.WriteLine("Client#{0} accepted on port {1}", ++ClientNbr, portNum ) ;
                    ++ClientNbr;
                    // An incoming connection needs to be processed.
                    ConnectionPool.Enqueue( new ClientHandler( tcpHandler, ClientNbr-1, handler  ) ) ;

                    // --TestingCycle ;
                }
                else
                    break;
            }
            listener.Stop();

            // Stop client requests handling
            ClientTask.Stop() ;
            }
            catch (Exception e)
            {
            Console.WriteLine(e.ToString());
            }
        }
Пример #2
0
 public ClientService(ClientConnectionPool ConnectionPool, int nThread )
 {
     numOfThread = nThread;
     ThreadTask = new Thread[ nThread ];
     this.ConnectionPool = ConnectionPool ;
 }