我用Console做了一个服务器 代码如下
 class Server
    {
        static void Main(string[] args)
        {    const int BufferSize = 8192;    // 缓存大小,8192Bytes
            ConsoleKey key;            Console.WriteLine("Server is running ... ");
            IPAddress ip = new IPAddress(new byte[] { 127, 0, 0, 1 });
          
            TcpListener listener = new TcpListener(ip, 8500);            listener.Start();           // 开始侦听
            Console.WriteLine("Start Listening ...");            // 获取一个连接,同步方法,在此处中断
            while (true)
            {
                TcpClient remoteClient = listener.AcceptTcpClient();                // 打印连接到的客户端信息
                Console.WriteLine("Client Connected!{0} <-- {1}",
                    remoteClient.Client.LocalEndPoint, remoteClient.Client.RemoteEndPoint);
                #region
                // 获得流
                NetworkStream streamToClient = remoteClient.GetStream();
                do
                {
                    // 写入buffer中
                    byte[] buffer = new byte[BufferSize];
                    int bytesRead;
                    try
                    {
                        while (true)
                        {
                            lock (streamToClient)
                            {
                                bytesRead = streamToClient.Read(buffer, 0, BufferSize);
                            }
                            if (bytesRead > 0) break;
                        }
                       
                        Console.WriteLine("Reading data, {0} bytes ...", bytesRead);                        // 获得请求的字符串
                        string msg = Encoding.Unicode.GetString(buffer, 0, bytesRead);
                        Console.WriteLine("Received: {0}", msg);                        // 转换成大写并发送
                        msg = msg.ToUpper();
                        buffer = Encoding.Unicode.GetBytes(msg);
                        lock (streamToClient)
                        {
                            streamToClient.Write(buffer, 0, buffer.Length);
                        }
                        Console.WriteLine("Sent: {0}", msg);
                        }
                        
                    
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                        break;
                    }
                } while (true);
                streamToClient.Dispose();
                remoteClient.Close();                Console.WriteLine("\n\n输入\"Q\"键退出。");
                do
                {
                    key = Console.ReadKey(true).Key;
                } while (key != ConsoleKey.Q);
                #endregion
            }
            #endregion
        }
    }
然后用web 作为客户端代码如下
protected void Button2_Click(object sender, System.EventArgs e)
    {
      //  Console.WriteLine("Client Running ...");
      //  TcpClient client;
      //  ConsoleKey key;
        const int BufferSize = 8192;
        TcpClient client = new TcpClient();
        try
        {
         //   IPHostEntry here = Dns.GetHostByName(Dns.GetHostName());
            client.Connect("localhost", 8500);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
            return;
        }        // 打印连接到的服务端信息
        this.DIV.InnerHtml += "链接服务器!" + client.Client.LocalEndPoint + "-->" + client.Client.RemoteEndPoint + "<br/>";         NetworkStream  streamToServer = client.GetStream();
        this.DIV.InnerHtml += "Menu: S - Send, X - Exit" + "<br/>";        
            
                // 获取输入的字符串
              
                string msg = this.TXT.Value;                byte[] buffer = Encoding.Unicode.GetBytes(msg);     // 获得缓存
                try
                {
                    lock (streamToServer)
                    {
                        streamToServer.Write(buffer, 0, buffer.Length);     // 发往服务器
                    }
                    this.DIV.InnerHtml += "Sent: " + msg + "<br/>";                    int bytesRead;
                    buffer = new byte[BufferSize];
                    lock (streamToServer)
                    {
                        bytesRead = streamToServer.Read(buffer, 0, BufferSize);
                    }
                    msg = Encoding.Unicode.GetString(buffer, 0, bytesRead);                   
                    this.DIV.InnerHtml += "Received: " + msg + "<br/>";                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    
                }
            
               streamToServer.Dispose();
        client.Close();
    }现在问题出来了, 由于http是无状态的协议, 每次就只有一次链接是返回了Console里转换为大写的值。 当第二次在客户端点击按钮后·就在客户端里的
 lock (streamToServer)
                    {
                        bytesRead = streamToServer.Read(buffer, 0, BufferSize);
                    }read处卡上了。    有没有什么方法可以解决这个问题呢