Coap.Proxy.ClientConnection.ForwardTcpData C# (CSharp) Method

ForwardTcpData() private method

Exchange Connect message from client and server
private ForwardTcpData ( Socket client, Socket server ) : void
client Socket client socket
server Socket server socket
return void
        private void ForwardTcpData(Socket client, Socket server)
            {
            ArrayList ReadList = new ArrayList(2);
            client.Send(Encoding.ASCII.GetBytes("HTTP/1.1 200 Connection established\r\n\r\n"));
            while (true)
            {
            ReadList.Clear();
            ReadList.Add(client);
            ReadList.Add(server);
            try
            {
                //Console.WriteLine("test socket");
                Socket.Select(ReadList, null, null, 1 * 1000 * 1000);
            } 
            catch (SocketException e)
            { 
                Console.WriteLine("Select error: " + e.Message);
                break;
            } 
            // time out
            if (ReadList.Count == 0)
            {
                //Console.WriteLine("Time out");
                if (client.Connected && server.Connected)
                    continue;
                else
                    break;
            }

            // client send message 
            if (ReadList.Contains(client))
            {
                byte[] Recv = new byte[1024];
            int Length = 0;

            try
            {
                Length = client.Receive(Recv, Recv.Length,0); 
                 if (Length == 0)
                {
                Console.WriteLine("Client is disconnect.");
                break;
                 }
                 Console.WriteLine(" Recv bytes from client" + Encoding.ASCII.GetString(Recv), Length);
            }
             catch (Exception e)
             { 
            Console.WriteLine("Read from client error: " + e.Message);
            break;
            }

            try 
            {
                Length = server.Send(Recv, Length,0); 
                Console.WriteLine(" Write bytes to server{0}", Length); 
            }
             catch (Exception e) 
            { 
                 Console.WriteLine("Write data to server error: " + e.Message); 
            break; 
            } 
            }
            // real server send messgae
            if (ReadList.Contains(server)) 
            {
            byte[] Recv = new byte[1024]; 
            int Length = 0; 
             try
             { 
            Length = server.Receive(Recv, Recv.Length, 0); 
            if (Length == 0)
             {
             Console.WriteLine("Server is disconnect"); 
            break; 
            } 
            Console.WriteLine("Recv bytes from server", Length); 
            } 
            catch (Exception e) 
            { 
            Console.WriteLine("Read from server error: " + e.Message);
             break;
             }
            try
            {
             Length = client.Send(Recv, Length, 0);
             Console.WriteLine(" Write bytes to client", Length);
             }
             catch (Exception e)
             {
             Console.WriteLine("Write data to client error: " + e.Message);
             break;
             }
             }

             }
             try
            {
             client.Shutdown(SocketShutdown.Both);
             server.Shutdown(SocketShutdown.Both);
             client.Close();
             server.Close();
            } 
            catch (Exception e)
            {
            Console.WriteLine(e.Message);
            }
            finally
            {
            Console.WriteLine("connect close");
             }
        }
        //Resource discovery Handle