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()); } }
public ClientHandler(TcpClientBis _ClientSocket, int num, string handle) { handler = handle; m_Num = num; ClientSocket = _ClientSocket; //ClientSocket.ReceiveTimeout = 5000 ; // 100 miliseconds networkStream = ClientSocket.GetStream(); bytes = new byte[ClientSocket.ReceiveBufferSize]; ContinueProcess = true; m_State = 0; //System.Net.Sockets.Socket ip = ClientSocket.Sock; if (handle == "PlayerHandler") { this.Send(new byte[] { 0x0, 0x06, 0xec, 0x01, 0x71, 0x2c, 0x7e, 0x88 }); } }
public ClientHandler( TcpClientBis _ClientSocket, int num, string handle ) { handler = handle; m_Num = num; ClientSocket = _ClientSocket ; //ClientSocket.ReceiveTimeout = 5000 ; // 100 miliseconds networkStream = ClientSocket.GetStream(); bytes = new byte[ ClientSocket.ReceiveBufferSize ]; ContinueProcess = true ; m_State = 0; //System.Net.Sockets.Socket ip = ClientSocket.Sock; if ( handle == "PlayerHandler" ) { this.Send( new byte[] { 0x0, 0x06, 0xec, 0x01, 0x71, 0x2c, 0x7e, 0x88 } ); } }
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()); } }